Mercurial > public > mercurial-scm > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
16196:8ae7626d8bf1 | 16198:fa8488565afd |
---|---|
16 import tags as tagsmod | 16 import tags as tagsmod |
17 from lock import release | 17 from lock import release |
18 import weakref, errno, os, time, inspect | 18 import weakref, errno, os, time, inspect |
19 propertycache = util.propertycache | 19 propertycache = util.propertycache |
20 filecache = scmutil.filecache | 20 filecache = scmutil.filecache |
21 | |
22 class storecache(filecache): | |
23 """filecache for files in the store""" | |
24 def join(self, obj, fname): | |
25 return obj.sjoin(fname) | |
21 | 26 |
22 class localrepository(repo.repository): | 27 class localrepository(repo.repository): |
23 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey', | 28 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey', |
24 'known', 'getbundle')) | 29 'known', 'getbundle')) |
25 supportedformats = set(('revlogv1', 'generaldelta')) | 30 supportedformats = set(('revlogv1', 'generaldelta')) |
174 return bookmarks.readcurrent(self) | 179 return bookmarks.readcurrent(self) |
175 | 180 |
176 def _writebookmarks(self, marks): | 181 def _writebookmarks(self, marks): |
177 bookmarks.write(self) | 182 bookmarks.write(self) |
178 | 183 |
179 @filecache('phaseroots', True) | 184 @storecache('phaseroots') |
180 def _phaseroots(self): | 185 def _phaseroots(self): |
181 self._dirtyphases = False | 186 self._dirtyphases = False |
182 phaseroots = phases.readroots(self) | 187 phaseroots = phases.readroots(self) |
183 phases.filterunknown(self, phaseroots) | 188 phases.filterunknown(self, phaseroots) |
184 return phaseroots | 189 return phaseroots |
193 cache[rev] = phase | 198 cache[rev] = phase |
194 for rev in self.changelog.descendants(*roots): | 199 for rev in self.changelog.descendants(*roots): |
195 cache[rev] = phase | 200 cache[rev] = phase |
196 return cache | 201 return cache |
197 | 202 |
198 @filecache('00changelog.i', True) | 203 @storecache('00changelog.i') |
199 def changelog(self): | 204 def changelog(self): |
200 c = changelog.changelog(self.sopener) | 205 c = changelog.changelog(self.sopener) |
201 if 'HG_PENDING' in os.environ: | 206 if 'HG_PENDING' in os.environ: |
202 p = os.environ['HG_PENDING'] | 207 p = os.environ['HG_PENDING'] |
203 if p.startswith(self.root): | 208 if p.startswith(self.root): |
204 c.readpending('00changelog.i.a') | 209 c.readpending('00changelog.i.a') |
205 return c | 210 return c |
206 | 211 |
207 @filecache('00manifest.i', True) | 212 @storecache('00manifest.i') |
208 def manifest(self): | 213 def manifest(self): |
209 return manifest.manifest(self.sopener) | 214 return manifest.manifest(self.sopener) |
210 | 215 |
211 @filecache('dirstate') | 216 @filecache('dirstate') |
212 def dirstate(self): | 217 def dirstate(self): |