Mercurial > hg-stable
changeset 48138:a1a6569b9283
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
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 01 Oct 2021 18:54:40 +0200 |
parents | de793f249852 |
children | ced8cf9c4905 |
files | mercurial/dirstatemap.py |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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]