##// END OF EJS Templates
rbc: fix invalid rbc-revs entries caused by missing cache growth...
Mads Kiilerich -
r29604:db0095c8 default
parent child Browse files
Show More
@@ -402,10 +402,9 b' class revbranchcache(object):'
402 if rev == nullrev:
402 if rev == nullrev:
403 return changelog.branchinfo(rev)
403 return changelog.branchinfo(rev)
404
404
405 # if requested rev is missing, add and populate all missing revs
405 # if requested rev isn't allocated, grow and cache the rev info
406 if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
406 if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
407 self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize -
407 return self._branchinfo(rev)
408 len(self._rbcrevs)))
409
408
410 # fast path: extract data from cache, use it if node is matching
409 # fast path: extract data from cache, use it if node is matching
411 reponode = changelog.node(rev)[:_rbcnodelen]
410 reponode = changelog.node(rev)[:_rbcnodelen]
@@ -452,6 +451,10 b' class revbranchcache(object):'
452 rbcrevidx = rev * _rbcrecsize
451 rbcrevidx = rev * _rbcrecsize
453 rec = array('c')
452 rec = array('c')
454 rec.fromstring(pack(_rbcrecfmt, node, branchidx))
453 rec.fromstring(pack(_rbcrecfmt, node, branchidx))
454 if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
455 self._rbcrevs.extend('\0' *
456 (len(self._repo.changelog) * _rbcrecsize -
457 len(self._rbcrevs)))
455 self._rbcrevs[rbcrevidx:rbcrevidx + _rbcrecsize] = rec
458 self._rbcrevs[rbcrevidx:rbcrevidx + _rbcrecsize] = rec
456 self._rbcrevslen = min(self._rbcrevslen, rev)
459 self._rbcrevslen = min(self._rbcrevslen, rev)
457
460
@@ -655,12 +655,16 b' Test that cache files are created and gr'
655 $ rm .hg/cache/rbc*
655 $ rm .hg/cache/rbc*
656 $ hg log -r "5 & branch(5)" -T "{rev}\n"
656 $ hg log -r "5 & branch(5)" -T "{rev}\n"
657 5
657 5
658 BUG: rbc-revs should have an entry as 5th record but has it misplaced as the
659 first:
660 $ f --size --hexdump .hg/cache/rbc-*
658 $ f --size --hexdump .hg/cache/rbc-*
661 .hg/cache/rbc-names-v1: size=1
659 .hg/cache/rbc-names-v1: size=1
662 0000: 61 |a|
660 0000: 61 |a|
663 .hg/cache/rbc-revs-v1: size=8
661 .hg/cache/rbc-revs-v1: size=112
664 0000: d8 cb c6 1d 00 00 00 00 |........|
662 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
663 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
664 0020: 00 00 00 00 00 00 00 00 d8 cb c6 1d 00 00 00 00 |................|
665 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
666 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
667 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
668 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
665
669
666 $ cd ..
670 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now