diff mercurial/dirstate.py @ 50128:2f60cd6442fd

dirstate: only reload the dirstate when it may have changed This reinstall the equivalent of what the `filecache` was doing. However it does it at the dirstate level. There is a double motivation for this: - This avoid duplicating logic with the dirstate "identity" logic. - This increase the lifetime of the `dirstate` object, helping to implement change scoping.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 22 Feb 2023 01:08:25 +0100
parents 4e95341c89aa
children 3c6546b149ed
line wrap: on
line diff
--- a/mercurial/dirstate.py	Wed Feb 22 01:04:55 2023 +0100
+++ b/mercurial/dirstate.py	Wed Feb 22 01:08:25 2023 +0100
@@ -190,6 +190,12 @@
         # raises an exception).
         self._cwd
 
+    def refresh(self):
+        if '_branch' in vars(self):
+            del self._branch
+        if '_map' in vars(self) and self._map.may_need_refresh():
+            self.invalidate()
+
     def prefetch_parents(self):
         """make sure the parents are loaded