diff mercurial/localrepo.py @ 16198:fa8488565afd stable

filecache: refactor path join logic to a function New users of filecache use different names for the function used to compute the runtime path of the cached file. Users should subclass filecache and provide their own version of this function to call the appropriate join function on 'obj' (an instance of the class that its member function was decorated).
author Idan Kamara <idankk86@gmail.com>
date Thu, 01 Mar 2012 17:39:58 +0200
parents 4546a8513dcd
children 9d4a2942a732
line wrap: on
line diff
--- a/mercurial/localrepo.py	Wed Feb 29 14:24:57 2012 +0100
+++ b/mercurial/localrepo.py	Thu Mar 01 17:39:58 2012 +0200
@@ -19,6 +19,11 @@
 propertycache = util.propertycache
 filecache = scmutil.filecache
 
+class storecache(filecache):
+    """filecache for files in the store"""
+    def join(self, obj, fname):
+        return obj.sjoin(fname)
+
 class localrepository(repo.repository):
     capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey',
                         'known', 'getbundle'))
@@ -176,7 +181,7 @@
     def _writebookmarks(self, marks):
       bookmarks.write(self)
 
-    @filecache('phaseroots', True)
+    @storecache('phaseroots')
     def _phaseroots(self):
         self._dirtyphases = False
         phaseroots = phases.readroots(self)
@@ -195,7 +200,7 @@
                     cache[rev] = phase
         return cache
 
-    @filecache('00changelog.i', True)
+    @storecache('00changelog.i')
     def changelog(self):
         c = changelog.changelog(self.sopener)
         if 'HG_PENDING' in os.environ:
@@ -204,7 +209,7 @@
                 c.readpending('00changelog.i.a')
         return c
 
-    @filecache('00manifest.i', True)
+    @storecache('00manifest.i')
     def manifest(self):
         return manifest.manifest(self.sopener)