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
--- a/mercurial/commands.py Fri Jan 15 13:01:37 2016 -0800
+++ b/mercurial/commands.py Fri Jan 15 13:46:33 2016 -0800
@@ -526,22 +526,24 @@
@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 @@
- 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 @@
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 @@
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))
--- a/tests/test-backout.t Fri Jan 15 13:01:37 2016 -0800
+++ b/tests/test-backout.t Fri Jan 15 13:46:33 2016 -0800
@@ -61,7 +61,7 @@
$ 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 @@
$ 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 @@
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 @@
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
--- a/tests/test-completion.t Fri Jan 15 13:01:37 2016 -0800
+++ b/tests/test-completion.t Fri Jan 15 13:46:33 2016 -0800
@@ -224,7 +224,7 @@
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
--- a/tests/test-keyword.t Fri Jan 15 13:01:37 2016 -0800
+++ b/tests/test-keyword.t Fri Jan 15 13:46:33 2016 -0800
@@ -1288,7 +1288,7 @@
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
--- a/tests/test-subrepo.t Fri Jan 15 13:01:37 2016 -0800
+++ b/tests/test-subrepo.t Fri Jan 15 13:46:33 2016 -0800
@@ -671,7 +671,7 @@
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.