changeset 22896:7e9cbb9c6053

dirstate: use 'm' state in otherparent to reduce ambiguity In rebase-like operations where we abandon the second parent, we can correctly fix up the state in setparents.
author Matt Mackall <mpm@selenic.com>
date Fri, 10 Oct 2014 13:31:06 -0500
parents dfa44e25bb53
children 8fe74328f700
files mercurial/dirstate.py tests/test-filebranch.t tests/test-issue522.t tests/test-merge-remove.t
diffstat 4 files changed, 12 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dirstate.py	Fri Oct 10 13:05:50 2014 -0500
+++ b/mercurial/dirstate.py	Fri Oct 10 13:31:06 2014 -0500
@@ -415,7 +415,13 @@
         if self._pl[1] == nullid:
             raise util.Abort(_("setting %r to other parent "
                                "only allowed in merges") % f)
-        self._addpath(f, 'n', 0, -2, -1)
+        if f in self and self[f] == 'n':
+            # merge-like
+            self._addpath(f, 'm', 0, -2, -1)
+        else:
+            # add-like
+            self._addpath(f, 'n', 0, -2, -1)
+
         if f in self._copymap:
             del self._copymap[f]
 
--- a/tests/test-filebranch.t	Fri Oct 10 13:05:50 2014 -0500
+++ b/tests/test-filebranch.t	Fri Oct 10 13:31:06 2014 -0500
@@ -66,11 +66,6 @@
   $ echo 2b > baz
   $ echo new > quux
 
-We shouldn't have anything but foo in merge state here:
-
-  $ hg debugstate --nodates | grep "^m"
-  m 644          3 foo
-
   $ hg ci -m "merge"
 
 main: we should have a merge here:
--- a/tests/test-issue522.t	Fri Oct 10 13:05:50 2014 -0500
+++ b/tests/test-issue522.t	Fri Oct 10 13:31:06 2014 -0500
@@ -38,7 +38,7 @@
   (branch merge, don't forget to commit)
 
   $ hg debugstate | grep foo
-  n   0         -2 unset               foo
+  m   0         -2 unset               foo
 
   $ hg st -A foo
   M foo
--- a/tests/test-merge-remove.t	Fri Oct 10 13:05:50 2014 -0500
+++ b/tests/test-merge-remove.t	Fri Oct 10 13:31:06 2014 -0500
@@ -21,7 +21,7 @@
   (branch merge, don't forget to commit)
 
   $ hg debugstate --nodates
-  n   0         -2 bar
+  m   0         -2 bar
   m 644         14 foo1
   copy: foo -> foo1
 
@@ -37,7 +37,7 @@
   $ hg rm -f foo1 bar
 
   $ hg debugstate --nodates
-  r   0         -2 bar
+  r   0         -1 bar
   r   0         -1 foo1
   copy: foo -> foo1
 
@@ -55,7 +55,7 @@
   adding foo1
 
   $ hg debugstate --nodates
-  n   0         -2 bar
+  m 644          5 bar
   m 644         14 foo1
   copy: foo -> foo1
 
@@ -74,7 +74,7 @@
   reverting foo1
 
   $ hg debugstate --nodates
-  n   0         -2 bar
+  m 644          5 bar
   m 644         14 foo1
   copy: foo -> foo1