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