dirstatemap: conclude `reset_state` with logic using the new __init__
Now the DirstateItem can deal with most of the logic related to its
initialization, our goal is to migrate the function to a more "unified" way were
minimal processing is done early before more generic code gets into play.
Nobody is calling this code yet, but this is about to change.
Differential Revision: https://phab.mercurial-scm.org/D11322
--- a/mercurial/dirstatemap.py Fri Jul 16 16:29:16 2021 +0200
+++ b/mercurial/dirstatemap.py Fri Jul 16 17:03:39 2021 +0200
@@ -313,6 +313,28 @@
else:
assert False, 'unreachable'
+ old_entry = self._map.get(filename)
+ self._dirs_incr(filename, old_entry)
+ entry = DirstateItem(
+ wc_tracked=wc_tracked,
+ p1_tracked=p1_tracked,
+ p2_tracked=p2_tracked,
+ merged=merged,
+ clean_p1=clean_p1,
+ clean_p2=clean_p2,
+ possibly_dirty=possibly_dirty,
+ parentfiledata=parentfiledata,
+ )
+ if entry.dm_nonnormal:
+ self.nonnormalset.add(filename)
+ else:
+ self.nonnormalset.discard(filename)
+ if entry.dm_otherparent:
+ self.otherparentset.add(filename)
+ else:
+ self.otherparentset.discard(filename)
+ self._map[filename] = entry
+
def set_untracked(self, f):
"""Mark a file as no longer tracked in the dirstate map"""
entry = self[f]