# HG changeset patch # User Pierre-Yves David # Date 1633107280 -7200 # Node ID a1a6569b9283e683e7de84c085903b909cb5deeb # Parent de793f249852bebe5cdafc90e8ca3ad9ea07fb1e dirstatemap: add a common `_refresh_entry` method for dirstatemap This method is called once a DirstateItem have been modified to apply the change on the dirstatemap if necessary. Each variant have a different implementation (which is … the point). We use `addfile` for the rustmap and not `set_dirstate_item` because we need to keep the internal counter up to date and `set_dirstate_item` does not do it. Differential Revision: https://phab.mercurial-scm.org/D11571 diff -r de793f249852 -r a1a6569b9283 mercurial/dirstatemap.py --- a/mercurial/dirstatemap.py Fri Oct 01 18:52:26 2021 +0200 +++ b/mercurial/dirstatemap.py Fri Oct 01 18:54:40 2021 +0200 @@ -98,6 +98,9 @@ tracking in a different way. """ + def _refresh_entry(self, f, entry): + """record updated state of an entry""" + class dirstatemap(_dirstatemapcommon): """Map encapsulating the dirstate's contents. @@ -381,6 +384,10 @@ ### code related to manipulation of entries and copy-sources + def _refresh_entry(self, f, entry): + if not entry.any_tracked: + self._map.pop(f, None) + def set_possibly_dirty(self, filename): """record that the current state of the file on disk is unknown""" self[filename].set_possibly_dirty() @@ -770,6 +777,12 @@ ### code related to manipulation of entries and copy-sources + def _refresh_entry(self, f, entry): + if not entry.any_tracked: + self._map.drop_item_and_copy_source(f) + else: + self._map.addfile(f, entry) + def set_possibly_dirty(self, filename): """record that the current state of the file on disk is unknown""" entry = self[filename]