backout: don't assume that tip as what we just committed
Differential Revision: https://phab.mercurial-scm.org/D9256
--- a/mercurial/commands.py Fri Oct 23 20:33:36 2020 +0900
+++ b/mercurial/commands.py Wed Oct 28 17:41:25 2020 +0100
@@ -861,13 +861,11 @@
ui.status(
_(b'changeset %s backs out changeset %s\n')
- % (nice(repo.changelog.tip()), nice(node))
+ % (nice(newnode), nice(node))
)
if opts.get(b'merge') and op1 != node:
hg.clean(repo, op1, show_stats=False)
- ui.status(
- _(b'merging with changeset %s\n') % nice(repo.changelog.tip())
- )
+ ui.status(_(b'merging with changeset %s\n') % nice(newnode))
overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')}
with ui.configoverride(overrides, b'backout'):
return hg.merge(repo[b'tip'])
--- a/tests/test-backout.t Fri Oct 23 20:33:36 2020 +0900
+++ b/tests/test-backout.t Wed Oct 28 17:41:25 2020 +0100
@@ -806,3 +806,18 @@
$ hg backout --merge --no-commit 2
abort: cannot specify both --no-commit and --merge
[255]
+
+Ensure that backout out the same changeset twice performs correctly:
+
+ $ hg backout 2
+ removing 3
+ changeset 3:8f188de730d9 backs out changeset 2:cccc23d9d68f
+ $ echo 4 > 4
+ $ hg ci -A -m 4
+ adding 4
+ $ hg up 2
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg backout 2
+ removing 3
+ created new head
+ changeset 3:8f188de730d9 backs out changeset 2:cccc23d9d68f