# HG changeset patch # User Yuya Nishihara # Date 1394272336 -32400 # Node ID 3f83fc5cfe715d292069ee8417c83804f6c6c1e4 # Parent e01cff65f4c55822ea79783ce36c104b2c64d5bf backout: correct commit status of no changes made (BC) (issue4190) If backout generated no changes to commit, it showed wrong status, "changeset backs out changeset ", and raised TypeError with -v option. This changes the return code to 1, which is the same as "hg commit" and "hg rebase". diff -r e01cff65f4c5 -r 3f83fc5cfe71 mercurial/commands.py --- 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): diff -r e01cff65f4c5 -r 3f83fc5cfe71 tests/test-backout.t --- 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)