[PATCH] backout: make help more explicit about what backout does
Jonathan Nieder
jrnieder at gmail.com
Wed Feb 2 08:10:27 UTC 2011
# HG changeset patch
# User Jonathan Nieder <jrnieder at gmail.com>
# Date 1296633712 21600
# Node ID 91804c80761f531f6b5eac52af7c8b9e6f9cd32f
# Parent 6bf8d48bec8e1ab2e0462ce14a914d06e64f7117
backout: make help more explicit about what backout does
The help for backout explains:
The backout command merges the reverse effect of the reverted
changeset into the working directory.
Unfortunately, that does not make it obvious to a newcomer what the
backout command does. Since it performs a 3-way merge, what is the
common ancestor? Will the result be automatically committed? What is
this reverted changeset --- is it the rev passed with -r on the
command line or its inverse?
So try to clarify the description, avoiding jargon and being
explicit about what happens from the user's perspective.
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -204,24 +204,20 @@
def backout(ui, repo, node=None, rev=None, **opts):
'''reverse effect of earlier changeset
- The backout command merges the reverse effect of the reverted
- changeset into the working directory.
-
- With the --merge option, it first commits the reverted changes
- as a new changeset. This new changeset is a child of the reverted
- changeset.
- The --merge option remembers the parent of the working directory
- before starting the backout, then merges the new head with that
- changeset afterwards.
- This will result in an explicit merge in the history.
-
- If you backout a changeset other than the original parent of the
- working directory, the result of this merge is not committed,
- as with a normal merge. Otherwise, no merge is needed and the
- commit is automatic.
-
- Note that the default behavior (without --merge) has changed in
- version 1.7. To restore the previous default behavior, use
+ Prepare a new changeset with the effect of REV undone in the
+ current working directory.
+
+ If REV is the tip, then this changeset is committed automatically.
+
+ Otherwise, a merge was necessary, so you should inspect the result
+ and then commit it.
+ If the --merge option is supplied, the next commit will have two
+ parents: the old parent of the working directory and a child
+ of REV that simply undoes REV. Otherwise, the next commit will
+ have one parent, maintaining a linear history.
+
+ Before version 1.7, the default behavior (without --merge) was
+ different. To restore the previous default behavior, use
:hg:`backout --merge` and then :hg:`update --clean .` to get rid of
the ongoing merge.
More information about the Mercurial-devel
mailing list