merge: don't auto-pick destination with `hg merge 'wdir()'`
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 24 Jan 2020 17:49:21 -0800
changeset 44177 1850066f9e36
parent 44176 6744859ff3ee
child 44178 bd4f666b55a7
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
mercurial/commands.py
tests/test-merge2.t
--- 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'.')
--- 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 ..