comparison mercurial/bundlerepo.py @ 5263:8040f2e4cad0

bundle: fix up lazy reads
author Brendan Cully <brendan@kublai.com>
date Mon, 27 Aug 2007 17:08:53 -0700
parents a35756389ef4
children 7c1a9a21dcd7
comparison
equal deleted inserted replaced
5262:a35756389ef4 5263:8040f2e4cad0
197 self.bundlefilespos = {} 197 self.bundlefilespos = {}
198 198
199 def __getattr__(self, name): 199 def __getattr__(self, name):
200 if name == 'changelog': 200 if name == 'changelog':
201 self.changelog = bundlechangelog(self.sopener, self.bundlefile) 201 self.changelog = bundlechangelog(self.sopener, self.bundlefile)
202 self.manstart = self.bundlefile.tell()
202 return self.changelog 203 return self.changelog
203 if name == 'manifest': 204 if name == 'manifest':
205 self.bundlefile.seek(self.manstart)
204 self.manifest = bundlemanifest(self.sopener, self.bundlefile, 206 self.manifest = bundlemanifest(self.sopener, self.bundlefile,
205 self.changelog.rev) 207 self.changelog.rev)
206 self.filestart = self.bundlefile.tell() 208 self.filestart = self.bundlefile.tell()
207 return self.manifest 209 return self.manifest
210 if name == 'manstart':
211 self.changelog
212 return self.manstart
213 if name == 'filestart':
214 self.manifest
215 return self.filestart
208 return localrepo.localrepository.__getattr__(self, name) 216 return localrepo.localrepository.__getattr__(self, name)
209 217
210 def url(self): 218 def url(self):
211 return self._url 219 return self._url
212 220
213 def dev(self): 221 def dev(self):
214 return -1 222 return -1
215 223
216 def file(self, f): 224 def file(self, f):
217 if not self.bundlefilespos: 225 if not self.bundlefilespos:
218 self.manifest
219 self.bundlefile.seek(self.filestart) 226 self.bundlefile.seek(self.filestart)
220 while 1: 227 while 1:
221 chunk = changegroup.getchunk(self.bundlefile) 228 chunk = changegroup.getchunk(self.bundlefile)
222 if not chunk: 229 if not chunk:
223 break 230 break