Show More
@@ -367,11 +367,8 b' class revbranchcache(object):' | |||||
367 |
|
367 | |||
368 | # if requested rev is missing, add and populate all missing revs |
|
368 | # if requested rev is missing, add and populate all missing revs | |
369 | if len(self._rbcrevs) < rbcrevidx + _rbcrecsize: |
|
369 | if len(self._rbcrevs) < rbcrevidx + _rbcrecsize: | |
370 | first = len(self._rbcrevs) // _rbcrecsize |
|
|||
371 | self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize - |
|
370 | self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize - | |
372 | len(self._rbcrevs))) |
|
371 | len(self._rbcrevs))) | |
373 | for r in xrange(first, len(changelog)): |
|
|||
374 | self._branchinfo(r) |
|
|||
375 |
|
372 | |||
376 | # fast path: extract data from cache, use it if node is matching |
|
373 | # fast path: extract data from cache, use it if node is matching | |
377 | reponode = changelog.node(rev)[:_rbcnodelen] |
|
374 | reponode = changelog.node(rev)[:_rbcnodelen] | |
@@ -380,10 +377,17 b' class revbranchcache(object):' | |||||
380 | close = bool(branchidx & _rbccloseflag) |
|
377 | close = bool(branchidx & _rbccloseflag) | |
381 | if close: |
|
378 | if close: | |
382 | branchidx &= _rbcbranchidxmask |
|
379 | branchidx &= _rbcbranchidxmask | |
383 |
if cachenode == |
|
380 | if cachenode == '\0\0\0\0': | |
|
381 | pass | |||
|
382 | elif cachenode == reponode: | |||
384 | return self._names[branchidx], close |
|
383 | return self._names[branchidx], close | |
|
384 | else: | |||
|
385 | # rev/node map has changed, invalidate the cache from here up | |||
|
386 | truncate = rbcrevidx + _rbcrecsize | |||
|
387 | del self._rbcrevs[truncate:] | |||
|
388 | self._rbcrevslen = min(self._rbcrevslen, truncate) | |||
|
389 | ||||
385 | # fall back to slow path and make sure it will be written to disk |
|
390 | # fall back to slow path and make sure it will be written to disk | |
386 | self._rbcrevslen = min(self._rbcrevslen, rev) |
|
|||
387 | return self._branchinfo(rev) |
|
391 | return self._branchinfo(rev) | |
388 |
|
392 | |||
389 | def _branchinfo(self, rev): |
|
393 | def _branchinfo(self, rev): | |
@@ -408,6 +412,7 b' class revbranchcache(object):' | |||||
408 | rec = array('c') |
|
412 | rec = array('c') | |
409 | rec.fromstring(pack(_rbcrecfmt, node, branchidx)) |
|
413 | rec.fromstring(pack(_rbcrecfmt, node, branchidx)) | |
410 | self._rbcrevs[rbcrevidx:rbcrevidx + _rbcrecsize] = rec |
|
414 | self._rbcrevs[rbcrevidx:rbcrevidx + _rbcrecsize] = rec | |
|
415 | self._rbcrevslen = min(self._rbcrevslen, rev) | |||
411 |
|
416 | |||
412 | def write(self): |
|
417 | def write(self): | |
413 | """Save branch cache if it is dirty.""" |
|
418 | """Save branch cache if it is dirty.""" |
General Comments 0
You need to be logged in to leave comments.
Login now