dirstate: support file tracked nowhere in `reset_state`
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 15 Sep 2021 18:36:59 +0200
changeset 47998 938a7769050c
parent 47997 70547a7d5930
child 47999 bac82c2ce858
dirstate: support file tracked nowhere in `reset_state` This let the dirstatemap decide when to drop files. Differential Revision: https://phab.mercurial-scm.org/D11438
mercurial/dirstatemap.py
--- a/mercurial/dirstatemap.py	Wed Sep 15 18:30:06 2021 +0200
+++ b/mercurial/dirstatemap.py	Wed Sep 15 18:36:59 2021 +0200
@@ -180,8 +180,8 @@
     def reset_state(
         self,
         filename,
-        wc_tracked,
-        p1_tracked,
+        wc_tracked=False,
+        p1_tracked=False,
         p2_tracked=False,
         merged=False,
         clean_p1=False,
@@ -206,7 +206,10 @@
         self.copymap.pop(filename, None)
 
         if not (p1_tracked or p2_tracked or wc_tracked):
-            self.dropfile(filename)
+            old_entry = self._map.pop(filename, None)
+            self._dirs_decr(filename, old_entry=old_entry)
+            self.nonnormalset.discard(filename)
+            self.copymap.pop(filename, None)
             return
         elif merged:
             # XXX might be merged and removed ?
@@ -576,8 +579,8 @@
         def reset_state(
             self,
             filename,
-            wc_tracked,
-            p1_tracked,
+            wc_tracked=False,
+            p1_tracked=False,
             p2_tracked=False,
             merged=False,
             clean_p1=False,