##// END OF EJS Templates
revbranchcache: populate cache incrementally...
Durham Goode -
r24376:203a078d default
parent child Browse files
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 == reponode:
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