Show More
@@ -247,14 +247,14 b' class bundlephasecache(phases.phasecache' | |||
|
247 | 247 | self.invalidate() |
|
248 | 248 | self.dirty = True |
|
249 | 249 | |
|
250 | bundlefilespos = {} | |
|
251 | 250 | def _getfilestarts(cgunpacker): |
|
251 | filespos = {} | |
|
252 | 252 | for chunkdata in iter(cgunpacker.filelogheader, {}): |
|
253 | 253 | fname = chunkdata['filename'] |
|
254 |
|
|
|
254 | filespos[fname] = cgunpacker.tell() | |
|
255 | 255 | for chunk in iter(lambda: cgunpacker.deltachunk(None), {}): |
|
256 | 256 | pass |
|
257 |
return |
|
|
257 | return filespos | |
|
258 | 258 | |
|
259 | 259 | class bundlerepository(localrepo.localrepository): |
|
260 | 260 | """A repository instance that is a union of a local repo and a bundle. |
@@ -312,8 +312,8 b' class bundlerepository(localrepo.localre' | |||
|
312 | 312 | raise error.Abort(_('bundle type %s cannot be read') % |
|
313 | 313 | type(bundle)) |
|
314 | 314 | |
|
315 |
# dict with the mapping 'filename' -> position in the |
|
|
316 |
self. |
|
|
315 | # dict with the mapping 'filename' -> position in the changegroup. | |
|
316 | self._cgfilespos = {} | |
|
317 | 317 | |
|
318 | 318 | self.firstnewrev = self.changelog.repotiprev + 1 |
|
319 | 319 | phases.retractboundary(self, None, phases.draft, |
@@ -403,12 +403,12 b' class bundlerepository(localrepo.localre' | |||
|
403 | 403 | return self._url |
|
404 | 404 | |
|
405 | 405 | def file(self, f): |
|
406 |
if not self. |
|
|
406 | if not self._cgfilespos: | |
|
407 | 407 | self._cgunpacker.seek(self.filestart) |
|
408 |
self. |
|
|
408 | self._cgfilespos = _getfilestarts(self._cgunpacker) | |
|
409 | 409 | |
|
410 |
if f in self. |
|
|
411 |
self._cgunpacker.seek(self. |
|
|
410 | if f in self._cgfilespos: | |
|
411 | self._cgunpacker.seek(self._cgfilespos[f]) | |
|
412 | 412 | linkmapper = self.unfiltered().changelog.rev |
|
413 | 413 | return bundlefilelog(self.svfs, f, self._cgunpacker, linkmapper) |
|
414 | 414 | else: |
General Comments 0
You need to be logged in to leave comments.
Login now