fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([staff profile] fu) wrote2011-02-09 09:14 pm
Entry tags:

Mercurial Queues

A Git User’s Guide to Mercurial Queues is pretty good, and has led me to investigate (and use) multiple patch queues.

Guards are much more flexible, and let you disable/enable patches easily, as well as mix and match different groups of patches. Everything you can do with qqueue, you can probably do with a guard.

For my purposes, qqueue is better, though. I don't need all that flexibility. I just want to group patches into logical branches, and be able to work on them as a group, as well as be able to stay "on topic" -- any new patches I create being automatically grouped with the patches I'm currently working on.

qqueue has made a few small changes to my workflow that have made my dev work much easier:
* hg qnew automatically adds a new patch in the same queue you're working on. No need to go back and do "hg qguard +featurename" each and every patch. No more annoying miscellaneous unguarded patches that need to be sorted out!

* hg qq -l brings up a list of all patches in the queue. With hg qguard, to find everything applicable, I'd need to do hg qguard -l | grep $featurename

* hg qq --delete $queuename lets me forget about all patches in a queue with a single command -- just what I need when I'm done with something


I still use guards within the patch queue, but only for small things: I use them to tweak configuration, or to disable a patch before running a test. My tests are almost always in a separate patch from my features code these days ;-)



Disadvantages: it's not easy to move patches from one queue to another and you can't apply patches from two different queues at the same time.

For what I need though, it's perfect.
pauamma: Cartooney crab holding drink (Default)

[personal profile] pauamma 2011-02-10 07:50 pm (UTC)(link)
How did I never find out about this before? Oh, right, 1.6.