MQ merging: qrebase command

Gilles Moris gilles.moris at free.fr
Mon Mar 3 15:55:00 CST 2008


On Fri February 29 2008 17:43:01 Jesse Glick wrote:
> > This is the purpose of "hg qsave" and "hg qpush -m"...
> 
> But this is a very cumbersome and error-prone UI. If Bryan admits that 
> using this system is too much of a hassle to bother with, how can we 
> expect anyone to use it? The tool should automate whatever it can and 
> make the common cases easy. Currently with MQ, rebasing a patch is only 
> for wizards, whereas this should be a completely routine operation.

I also found that I cannot ask all of the developers working with me to
to do all that sequence of manipulations. So I was working on an integrated
command to basically automate the MqMerge Wiki at:
http://www.selenic.com/mercurial/wiki/index.cgi/MqMerge

For the time being, it is called qrebase, and is doing the merge of all
the patch queue. It checks that the whole queue cleanly apply on the FROM
revision (current parent by default) and just apply the MqMerge recipe,
nothing more. Not a revolution, but less error prone.
Other than that, it is working much like the merge command. If no rev is
given, it is rebasing by default to the head of the current branch. So that
you usually just need to do:

hg qpush / qpop    # work on your queue
hg pull            # pull other changes
hg qrebase         # merge your queue upstream

Usage: hg qrebase [-n NAME] [-b FROM_REV] [TO_REV]

It is still a work in progress. I can start to work on a test suite if it
is worth continuing, but ultimately, I would prefer to have the merges done
at the granularity of the patch, instead of the whole queue.

Gilles.
PS: mq patch attached
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qrebase.patch
Type: text/x-diff
Size: 4543 bytes
Desc: not available
Url : http://selenic.com/pipermail/mercurial/attachments/20080303/4e2afda9/attachment.patch 


More information about the Mercurial mailing list