# HG changeset patch # User Ruslan Sayfutdinov # Date 2016-01-15 21:46:33 # Node ID ce76c4d2b85c6a9f8b02d614cd60ba0a5d505b48 # Parent 88aa4da0cba88aab56a7cbb2bcb931bf5747510f backout: commit changeset by default (BC) Add --no-commit flag to prevent it. This should make the hg user experience a little better. Some discussion can be found here: http://markmail.org/message/7jm7ro2ias6hxywy diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -526,22 +526,24 @@ def archive(ui, repo, dest, **opts): @command('backout', [('', 'merge', None, _('merge with old dirstate parent after backout')), - ('', 'commit', None, _('commit if no conflicts were encountered')), + ('', 'commit', None, + _('commit if no conflicts were encountered (DEPRECATED)')), + ('', 'no-commit', None, _('do not commit')), ('', 'parent', '', _('parent to choose when backing out merge (DEPRECATED)'), _('REV')), ('r', 'rev', '', _('revision to backout'), _('REV')), ('e', 'edit', False, _('invoke editor on commit messages')), ] + mergetoolopts + walkopts + commitopts + commitopts2, _('[OPTION]... [-r] REV')) -def backout(ui, repo, node=None, rev=None, commit=False, **opts): +def backout(ui, repo, node=None, rev=None, **opts): '''reverse effect of earlier changeset Prepare a new changeset with the effect of REV undone in the - current working directory. + current working directory. If no conflicts were encountered, + it will be committed immediately. If REV is the parent of the working directory, then this new changeset - is committed automatically. Otherwise, hg needs to merge the - changes and the merged result is left uncommitted. + is committed automatically (unless --no-commit is specified). .. note:: @@ -560,12 +562,12 @@ def backout(ui, repo, node=None, rev=Non - Reverse the effect of previous bad revision 23:: hg backout -r 23 - hg commit -m "Backout revision 23" - Reverse the effect of previous bad revision 23 and - commit the backout immediately:: - - hg backout -r 23 --commit + leave changes uncommitted:: + + hg backout -r 23 --no-commit + hg commit -m "Backout revision 23" By default, the pending changeset will have one parent, maintaining a linear history. With --merge, the pending @@ -589,11 +591,14 @@ def backout(ui, repo, node=None, rev=Non try: wlock = repo.wlock() lock = repo.lock() - return _dobackout(ui, repo, node, rev, commit, **opts) + return _dobackout(ui, repo, node, rev, **opts) finally: release(lock, wlock) -def _dobackout(ui, repo, node=None, rev=None, commit=False, **opts): +def _dobackout(ui, repo, node=None, rev=None, **opts): + if opts.get('commit') and opts.get('no_commit'): + raise error.Abort(_("cannot use --commit with --no-commit")) + if rev and node: raise error.Abort(_("please specify just one revision")) @@ -648,7 +653,7 @@ def _dobackout(ui, repo, node=None, rev= repo.ui.status(_("use 'hg resolve' to retry unresolved " "file merges\n")) return 1 - elif not commit: + elif opts.get('no_commit'): msg = _("changeset %s backed out, " "don't forget to commit.\n") ui.status(msg % short(node)) diff --git a/tests/test-backout.t b/tests/test-backout.t --- a/tests/test-backout.t +++ b/tests/test-backout.t @@ -61,7 +61,7 @@ commit option $ echo grapes >> a $ hg commit -d '2 0' -m grapes - $ hg backout --commit -d '4 0' 1 --tool=:fail + $ hg backout -d '4 0' 1 --tool=:fail 0 files updated, 0 files merged, 1 files removed, 0 files unresolved changeset 3:1c2161e97c0a backs out changeset 1:22cb4f70d813 $ hg summary @@ -75,7 +75,7 @@ commit option $ echo ypples > a $ hg commit -d '5 0' -m ypples - $ hg backout --commit -d '6 0' 2 --tool=:fail + $ hg backout -d '6 0' 2 --tool=:fail 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges [1] @@ -371,7 +371,7 @@ backout should not back out subsequent c phases: 3 draft without --merge - $ hg backout -d '3 0' 1 --tool=true + $ hg backout --no-commit -d '3 0' 1 --tool=true 1 files updated, 0 files merged, 0 files removed, 0 files unresolved changeset 22bca4c721e5 backed out, don't forget to commit. $ hg locate b @@ -511,7 +511,7 @@ named branches adding file2 without --merge - $ hg backout -r 1 --tool=true + $ hg backout --no-commit -r 1 --tool=true 0 files updated, 0 files merged, 1 files removed, 0 files unresolved changeset bf1602f437f3 backed out, don't forget to commit. $ hg branch diff --git a/tests/test-completion.t b/tests/test-completion.t --- a/tests/test-completion.t +++ b/tests/test-completion.t @@ -224,7 +224,7 @@ Show all commands + options update: clean, check, date, rev, tool addremove: similarity, subrepos, include, exclude, dry-run archive: no-decode, prefix, rev, type, subrepos, include, exclude - backout: merge, commit, parent, rev, edit, tool, include, exclude, message, logfile, date, user + backout: merge, commit, no-commit, parent, rev, edit, tool, include, exclude, message, logfile, date, user bisect: reset, good, bad, skip, extend, command, noupdate bookmarks: force, rev, delete, rename, inactive, template branch: force, clean diff --git a/tests/test-keyword.t b/tests/test-keyword.t --- a/tests/test-keyword.t +++ b/tests/test-keyword.t @@ -1288,7 +1288,7 @@ Test restricted mode with graft Test restricted mode with backout - $ hg backout -q 11 + $ hg backout -q 11 --no-commit $ hg diff a diff -r 01a68de1003a a --- a/a Thu Jan 01 00:00:00 1970 +0000 diff --git a/tests/test-subrepo.t b/tests/test-subrepo.t --- a/tests/test-subrepo.t +++ b/tests/test-subrepo.t @@ -671,7 +671,7 @@ update backout calls revert internally with minimal opts, which should not raise KeyError - $ hg backout ".^" + $ hg backout ".^" --no-commit 0 files updated, 0 files merged, 0 files removed, 0 files unresolved changeset c373c8102e68 backed out, don't forget to commit.