comparison mercurial/bundlerepo.py @ 8260:54a4b520bd7d

localrepo: use propertycache
author Matt Mackall <mpm@selenic.com>
date Wed, 29 Apr 2009 20:47:15 -0500
parents 0a9542703300
children b87a50b7125c
comparison
equal deleted inserted replaced
8259:98acfd1d2b08 8260:54a4b520bd7d
207 raise util.Abort(_("%s: unknown bundle compression type") 207 raise util.Abort(_("%s: unknown bundle compression type")
208 % bundlename) 208 % bundlename)
209 # dict with the mapping 'filename' -> position in the bundle 209 # dict with the mapping 'filename' -> position in the bundle
210 self.bundlefilespos = {} 210 self.bundlefilespos = {}
211 211
212 def __getattr__(self, name): 212 @util.propertycache
213 if name == 'changelog': 213 def changelog(self):
214 self.changelog = bundlechangelog(self.sopener, self.bundlefile) 214 c = bundlechangelog(self.sopener, self.bundlefile)
215 self.manstart = self.bundlefile.tell() 215 self.manstart = self.bundlefile.tell()
216 return self.changelog 216 return c
217 elif name == 'manifest': 217
218 self.bundlefile.seek(self.manstart) 218 @util.propertycache
219 self.manifest = bundlemanifest(self.sopener, self.bundlefile, 219 def manifest(self):
220 self.changelog.rev) 220 self.bundlefile.seek(self.manstart)
221 self.filestart = self.bundlefile.tell() 221 m = bundlemanifest(self.sopener, self.bundlefile, self.changelog.rev)
222 return self.manifest 222 self.filestart = self.bundlefile.tell()
223 elif name == 'manstart': 223 return m
224 self.changelog 224
225 return self.manstart 225 @util.propertycache
226 elif name == 'filestart': 226 def manstart(self):
227 self.manifest 227 self.changelog
228 return self.filestart 228 return self.manstart
229 else: 229
230 return localrepo.localrepository.__getattr__(self, name) 230 @util.propertycache
231 def filestart(self):
232 self.manifest
233 return self.filestart
231 234
232 def url(self): 235 def url(self):
233 return self._url 236 return self._url
234 237
235 def file(self, f): 238 def file(self, f):