diff mercurial/localrepo.py @ 18313:3e4a944c0d04

destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743) We need to make sure that if X is in the filecache then it's also in the filecache owner's __dict__, otherwise it will go out of sync: repo.X # first access to X, records stat info in # filecache and updates __dict__ repo._filecache.clear() # removes X from _filecache but it's still in __dict__ repo.invalidate() # iterates over _filecache and removes entries # from __dict__, but X isn't in _filecache, so # it's kept in __dict__ repo.X # X is fetched from __dict__, bypassing the filecache
author Idan Kamara <idankk86@gmail.com>
date Wed, 09 Jan 2013 20:37:44 +0200
parents 7331ee72f99c
children 3c3855470b19
line wrap: on
line diff
--- a/mercurial/localrepo.py	Fri Jan 11 00:05:52 2013 +0200
+++ b/mercurial/localrepo.py	Wed Jan 09 20:37:44 2013 +0200
@@ -1447,10 +1447,7 @@
         # head, refresh the tag cache, then immediately add a new head.
         # But I think doing it this way is necessary for the "instant
         # tag cache retrieval" case to work.
-        self.invalidatecaches()
-
-        # Discard all cache entries to force reloading everything.
-        self._filecache.clear()
+        self.invalidate()
 
     def walk(self, match, node=None):
         '''