changeset 47989:87b3010c08e0

dirstate: fix restoration of "merged" state after a remove Before this change, "merged" file that get removed and re-added later were recorded as "from_p2" instead. This came from 8fe74328f700, a 2014 changeset that start explicitly doing so for reason I have not been able to fully grasp. The graft test mentioned in the description are still happy after this changeset. So this changeset restore what seems to be the intended behavior. Restoring information as it was before the removal. Differential Revision: https://phab.mercurial-scm.org/D11429
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 15 Sep 2021 11:13:46 +0200
parents d459c6b84961
children 0d2a404f1932
files mercurial/dirstate.py tests/test-merge-remove.t
diffstat 2 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dirstate.py	Wed Sep 15 10:20:25 2021 +0200
+++ b/mercurial/dirstate.py	Wed Sep 15 11:13:46 2021 +0200
@@ -734,7 +734,10 @@
                 # (see `merged_removed` and `from_p2_removed`)
                 if entry.merged_removed or entry.from_p2_removed:
                     source = self._map.copymap.get(f)
-                    self._addpath(f, from_p2=True)
+                    if entry.merged_removed:
+                        self._addpath(f, merged=True)
+                    else:
+                        self._addpath(f, from_p2=True)
                     self._map.copymap.pop(f, None)
                     if source is not None:
                         self.copy(source, f)
--- a/tests/test-merge-remove.t	Wed Sep 15 10:20:25 2021 +0200
+++ b/tests/test-merge-remove.t	Wed Sep 15 11:13:46 2021 +0200
@@ -55,8 +55,8 @@
   adding foo1
 
   $ hg debugstate --no-dates
-  n   0         -2 unset               bar
-  n   0         -2 unset               foo1
+  m   0         -2 unset               bar
+  m   0         -2 unset               foo1
   copy: foo -> foo1
 
   $ hg st -qC
@@ -74,8 +74,8 @@
   reverting foo1
 
   $ hg debugstate --no-dates
-  n   0         -2 unset               bar
-  n   0         -2 unset               foo1
+  m   0         -2 unset               bar
+  m   0         -2 unset               foo1
   copy: foo -> foo1
 
   $ hg st -qC