diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -52,6 +52,7 @@ class dirstate(object): self._dirtypl = False self._lastnormaltime = 0 self._ui = ui + self._filecache = {} @propertycache def _map(self): diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -901,10 +901,13 @@ class localrepository(repo.repository): rereads the dirstate. Use dirstate.invalidate() if you want to explicitly read the dirstate again (i.e. restoring it to a previous known good state).''' - try: + if 'dirstate' in self.__dict__: + for k in self.dirstate._filecache: + try: + delattr(self.dirstate, k) + except AttributeError: + pass delattr(self, 'dirstate') - except AttributeError: - pass def invalidate(self): for k in self._filecache: