Patchwork D11423: dirstate: same logic as what we did for `_drop`

login
register
mail settings
Submitter phabricator
Date Sept. 16, 2021, 2:42 p.m.
Message ID <differential-rev-PHID-DREV-io4xv3www2rivzjnhgyg-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/49739/
State Superseded
Headers show

Comments

phabricator - Sept. 16, 2021, 2:42 p.m.
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This is part of the dirstatemap so let le dirstatemap deal with it.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11423

AFFECTED FILES
  mercurial/dirstate.py
  mercurial/dirstatemap.py

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/mercurial/dirstatemap.py b/mercurial/dirstatemap.py
--- a/mercurial/dirstatemap.py
+++ b/mercurial/dirstatemap.py
@@ -188,6 +188,7 @@ 
             assert not possibly_dirty
             assert not from_p2
             new_entry = DirstateItem.new_added()
+            self.copymap.pop(f, None)
         elif merged:
             assert not possibly_dirty
             assert not from_p2
@@ -567,7 +568,7 @@ 
             from_p2=False,
             possibly_dirty=False,
         ):
-            return self._rustmap.addfile(
+            ret = self._rustmap.addfile(
                 f,
                 mode,
                 size,
@@ -577,6 +578,9 @@ 
                 from_p2,
                 possibly_dirty,
             )
+            if added:
+                self.copymap.pop(f, None)
+            return ret
 
         def reset_state(
             self,
diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -738,7 +738,6 @@ 
     def _add(self, filename):
         """internal function to mark a file as added"""
         self._addpath(filename, added=True)
-        self._map.copymap.pop(filename, None)
 
     def _drop(self, filename):
         """internal function to drop a file from the dirstate"""