# HG changeset patch # User Martin von Zweigbergk # Date 1579916961 28800 # Node ID 1850066f9e362529d197d569d89c4c2c7cb56069 # Parent 6744859ff3ee5125ec80b0721a54e9a72f360965 merge: don't auto-pick destination with `hg merge 'wdir()'` If the user doesn't specify a commit to merge with, we'll have `node==None` in `commands.merge()`. We'll then try to find a good commit to merge with. However, if the user, for some strange reason, runs `hg merge 'wdir()'`, we'll also have `node==None` and we'll do that same. That's clearly not the intent, so let's not do that. It turns out we'd instead crash on that command after this patch, so I added special handling of it too. Differential Revision: https://phab.mercurial-scm.org/D7996 diff -r 6744859ff3ee -r 1850066f9e36 mercurial/commands.py --- a/mercurial/commands.py Fri Jan 24 16:05:11 2020 -0800 +++ b/mercurial/commands.py Fri Jan 24 17:49:21 2020 -0800 @@ -4866,8 +4866,7 @@ if node: node = scmutil.revsingle(repo, node).node() - - if not node: + else: if ui.configbool(b'commands', b'merge.require-rev'): raise error.Abort( _( @@ -4877,6 +4876,9 @@ ) node = repo[destutil.destmerge(repo)].node() + if 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.lookup(b'.') diff -r 6744859ff3ee -r 1850066f9e36 tests/test-merge2.t --- a/tests/test-merge2.t Fri Jan 24 16:05:11 2020 -0800 +++ b/tests/test-merge2.t Fri Jan 24 17:49:21 2020 -0800 @@ -50,4 +50,8 @@ adding b created new head + $ hg merge 'wdir()' + abort: merging with the working copy has no effect + [255] + $ cd ..