HotSpot workflow

Volker Simonis volker.simonis at
Tue Apr 14 12:54:37 UTC 2015

Mercurial Queues (mq) is your friend!

I can not imagine imagine OpenJDK development without the MqExtension
[1] and so far I managed to convince everybody to use it who was
asking the same question like you :)

With MqExtension you can easily keep an arbitrary number of Mercurial
changes in a so called patch queue (it's located under .hg/patches).
These patches can be easily and selectively imported into your actual
repository ("hg qpush") or backed out again ("hg qpop"). You can also
merge several changes in the patch queue into one change with "hg

My usual wok-flow looks as follows:

hg clone / hg pull -u
<do some local changes>
hg qnew -m "My first local change" first.patch
<do some other local changes>
hg qrefresh // "other local changes" will go into first.patch
<do yet another local changes>
hg qnew -m "My second local change" second.patch

hg qseries // will show the applied changes from the patch queue

<now I want to sync with upstream>
hg qpop --all // removes all local changes from the repo
hg pull -u

<Now I only want to apply my first patch>
hg qpush --move first.patch
<do some testing if my patch still works>
<now I want to pull the change to upstream>
hg qfinish first.patch // removes first.patch from patch queue and
makes a 'real' changeset out of it.
hg push

You can read [1] for more examples and a complete documentation. In
particular you can even version your patch queue!



On Tue, Apr 14, 2015 at 2:26 PM, Andrew Haley <aph at> wrote:
> I'm having some practical problems with the HotSpot workflow.
> I usually have several patches on the fly at any time, but webrev and
> Mercurial don't really help.  "hg push" and "hg merge" work on the
> whole repo, not just a changeset, so I've been manually saving
> changesets and re-merging them into the master tree, which is very
> error-prone and has led to some mistakes submitting changes.
> Also, the need to submit a change as a single changeset makes it
> awkward to commit regularly as I work on a patch; I can't find any way
> to merge a set of changes into a single changeset and push that.
> So, what do you do?  Do you keep a source tree checked out for every
> webrev?  Do you regularly commit as you work?  Am I missing
> some tricks?
> Thanks,
> Andrew.

More information about the hotspot-dev mailing list