From MQ To Evolve, The Refugee Book¶
Cheat sheet¶
mq command |
new equivalent |
---|---|
qseries |
|
qnew |
|
qrefresh |
|
qrefresh –exclude |
|
qpop |
|
qpush |
|
qrm |
|
qfold |
|
qdiff |
|
qrecord |
|
qimport |
|
qfinish |
– |
qcommit |
– |
Replacement details¶
hg qseries¶
All your work in progress is now in real changesets all the time.
You can use the standard log
command to display them. You can use the
draft()
(or secret()
) revset to display unfinished work only, and
use templates to have the same kind of compact that the output of
qseries
has.
This will result in something like
[alias]
wip = log -r 'not public()' --template='{rev}:{node|short} {desc|firstline}\n'
Using the topic extension provides another way of looking at your
work in progress. Topic branches are lightweight branches which
fade out when changes are finalized. Although the underlying
mechanics are different, both queues and topics help users
organize and share their unfinished work. The topic extension
provides the stack
command. Similar to qseries
, stack
lists all changesets in a topic as well as other related
information.
$ hg stack
Installing the evolve extension also installs the topic extension. To enable it, add the following to your hgrc config:
[extensions]
topic =
hg qnew¶
With evolve you handle standard changesets without an additional overlay.
Standard changeset are created using hg commit
as usual
$ hg commit
If you want to keep the “WIP is not pushed” behavior, you want to
set your changeset in the secret phase using the phase
command.
Note that you only need it for the first commit you want to be secret. Later commits will inherit their parent’s phase.
If you always want your new commit to be in the secret phase, your should consider updating your configuration
[phases]
new-commit = secret
hg qref¶
A new command from evolution will allow you to rewrite the changeset you are currently on. Just call
$ hg amend
This command takes the same options as commit
, plus the switch -e
(--edit
)
to edit the commit message in an editor.
hg qref –exclude¶
To remove changes from your current commit use
$ hg uncommit not-ready.txt
hg qpop¶
To emulate the behavior of qpop
use
$ hg previous
If you need to go back to an arbitrary commit you can use
$ hg update
Note
previous and update allow movement with working directory changes applied, and gracefully merge them.
Note
Previous versions of the documentation recommended the deprecated gdown command
hg qpush¶
The following command emulates the behavior of hg qpush
$ hg next
When you rewrite changesets, descendants of rewritten changesets are marked as “orphan”. You need to rewrite them on top of the new version of their ancestor.
The evolution extension adds a command to rewrite “orphan” changesets
$ hg evolve
You can also reorder a changeset using
$ hg pick OLD_VERSION
or
$ hg rebase -r REVSET_FOR_OLD_VERSION -d .
note: using pick
allows you to choose the changeset you want next as the --move
option of qpush
does.
hg qrm¶
evolution introduces a new command to mark a changeset as “not wanted anymore”.
$ hg prune REVSET
hg qfold¶
The following command emulates the behavior of qfold
$ hg fold FIRST::LAST
hg qdiff¶
pdiff
is an alias for hg diff -r .^
It works like qdiff
, but outside MQ.
hg qimport¶
To import a new patch, use
$ hg import NEW_CHANGES.patch
hg qfinish¶
This is not necessary anymore. If you want to control the
mutability of changesets, see the phase
feature.
hg qcommit¶
If you really need to send patches through versioned mq patches, you should look at the qsync extension.