diff -r f82d2d4e71db -r 2f290136b7d6 mercurial/commands.py --- a/mercurial/commands.py Fri Jan 17 21:22:23 2020 +0300 +++ b/mercurial/commands.py Fri Jan 24 15:28:37 2020 -0800 @@ -876,7 +876,7 @@ ) overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} with ui.configoverride(overrides, b'backout'): - return hg.merge(repo, hex(repo.changelog.tip())) + return hg.merge(repo[b'tip']) return 0 @@ -4878,7 +4878,7 @@ node = opts.get(b'rev') if node: - node = scmutil.revsingle(repo, node).node() + ctx = scmutil.revsingle(repo, node) else: if ui.configbool(b'commands', b'merge.require-rev'): raise error.Abort( @@ -4887,15 +4887,15 @@ b'with' ) ) - node = repo[destutil.destmerge(repo)].node() - - if node is None: + ctx = repo[destutil.destmerge(repo)] + + if ctx.node() is None: raise error.Abort(_(b'merging with the working copy has no effect')) if opts.get(b'preview'): # find nodes that are ancestors of p2 but not of p1 p1 = repo[b'.'].node() - p2 = node + p2 = ctx.node() nodes = repo.changelog.findmissing(common=[p1], heads=[p2]) displayer = logcmdutil.changesetdisplayer(ui, repo, opts) @@ -4909,7 +4909,7 @@ with ui.configoverride(overrides, b'merge'): force = opts.get(b'force') labels = [b'working copy', b'merge rev'] - return hg.merge(repo, node, force=force, labels=labels) + return hg.merge(ctx, force=force, labels=labels) statemod.addunfinished(