backout: correct commit status of no changes made (BC) (
issue4190)
If backout generated no changes to commit, it showed wrong status, "changeset
<target> backs out changeset <target>", and raised TypeError with -v option.
This changes the return code to 1, which is the same as "hg commit" and
"hg rebase".
--- a/mercurial/commands.py Sat Mar 08 18:41:56 2014 +0900
+++ b/mercurial/commands.py Sat Mar 08 18:52:16 2014 +0900
@@ -416,7 +416,8 @@
See :hg:`help dates` for a list of formats valid for -d/--date.
- Returns 0 on success, 1 if there are unresolved files.
+ Returns 0 on success, 1 if nothing to backout or there are unresolved
+ files.
'''
if rev and node:
raise util.Abort(_("please specify just one revision"))
@@ -495,6 +496,9 @@
return repo.commit(message, opts.get('user'), opts.get('date'),
match, editor=e)
newnode = cmdutil.commit(ui, repo, commitfunc, [], opts)
+ if not newnode:
+ ui.status(_("nothing changed\n"))
+ return 1
cmdutil.commitstatus(repo, newnode, branch, bheads)
def nice(node):
--- a/tests/test-backout.t Sat Mar 08 18:41:56 2014 +0900
+++ b/tests/test-backout.t Sat Mar 08 18:52:16 2014 +0900
@@ -409,6 +409,22 @@
$ cd ..
+backout of empty changeset (issue4190)
+
+ $ hg init emptycommit
+ $ cd emptycommit
+
+ $ touch file1
+ $ hg ci -Aqm file1
+ $ hg branch -q branch1
+ $ hg ci -qm branch1
+ $ hg backout -v 1
+ resolving manifests
+ nothing changed
+ [1]
+
+ $ cd ..
+
Test usage of `hg resolve` in case of conflict
(issue4163)