Show More
@@ -457,6 +457,11 b' def branch(repo, subset, x):' | |||
|
457 | 457 | a regular expression. To match a branch that actually starts with `re:`, |
|
458 | 458 | use the prefix `literal:`. |
|
459 | 459 | """ |
|
460 | import branchmap | |
|
461 | urepo = repo.unfiltered() | |
|
462 | ucl = urepo.changelog | |
|
463 | getbi = branchmap.revbranchcache(urepo).branchinfo | |
|
464 | ||
|
460 | 465 | try: |
|
461 | 466 | b = getstring(x, '') |
|
462 | 467 | except error.ParseError: |
@@ -468,16 +473,16 b' def branch(repo, subset, x):' | |||
|
468 | 473 | # note: falls through to the revspec case if no branch with |
|
469 | 474 | # this name exists |
|
470 | 475 | if pattern in repo.branchmap(): |
|
471 |
return subset.filter(lambda r: matcher( |
|
|
476 | return subset.filter(lambda r: matcher(getbi(ucl, r)[0])) | |
|
472 | 477 | else: |
|
473 |
return subset.filter(lambda r: matcher( |
|
|
478 | return subset.filter(lambda r: matcher(getbi(ucl, r)[0])) | |
|
474 | 479 | |
|
475 | 480 | s = getset(repo, spanset(repo), x) |
|
476 | 481 | b = set() |
|
477 | 482 | for r in s: |
|
478 | b.add(repo[r].branch()) | |
|
483 | b.add(getbi(ucl, r)[0]) | |
|
479 | 484 | c = s.__contains__ |
|
480 |
return subset.filter(lambda r: c(r) or |
|
|
485 | return subset.filter(lambda r: c(r) or getbi(ucl, r)[0] in b) | |
|
481 | 486 | |
|
482 | 487 | def bumped(repo, subset, x): |
|
483 | 488 | """``bumped()`` |
@@ -520,4 +520,79 b' template output:' | |||
|
520 | 520 | } |
|
521 | 521 | ] |
|
522 | 522 | |
|
523 | revision branch name caching implementation | |
|
524 | ||
|
525 | cache creation | |
|
526 | $ rm .hg/cache/rbc-revs-v1 | |
|
527 | $ hg debugrevspec 'branch("re:a ")' | |
|
528 | 7 | |
|
529 | $ [ -f .hg/cache/rbc-revs-v1 ] || echo no file | |
|
530 | no file | |
|
531 | recovery from invalid cache file | |
|
532 | $ echo > .hg/cache/rbc-revs-v1 | |
|
533 | $ hg debugrevspec 'branch("re:a ")' | |
|
534 | 7 | |
|
535 | cache update NOT fully written from revset | |
|
536 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
537 | 68b329da9893e34099c7d8ad5cb9c940 .hg/cache/rbc-revs-v1 | |
|
538 | recovery from other corruption - extra trailing data | |
|
539 | $ echo >> .hg/cache/rbc-revs-v1 | |
|
540 | $ hg debugrevspec 'branch("re:a ")' | |
|
541 | 7 | |
|
542 | cache update NOT fully written from revset | |
|
543 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
544 | e1c06d85ae7b8b032bef47e42e4c08f9 .hg/cache/rbc-revs-v1 | |
|
545 | lazy update after commit | |
|
546 | $ hg tag tag | |
|
547 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
548 | d0c0166808ee0a1f0e8894915ad363b6 .hg/cache/rbc-revs-v1 | |
|
549 | $ hg debugrevspec 'branch("re:a ")' | |
|
550 | 7 | |
|
551 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
552 | d0c0166808ee0a1f0e8894915ad363b6 .hg/cache/rbc-revs-v1 | |
|
553 | update after rollback - cache keeps stripped revs until written for other reasons | |
|
554 | $ hg up -qr '.^' | |
|
555 | $ hg rollback -qf | |
|
556 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
557 | d8c2acdc229bf942fde1dfdbe8f9d933 .hg/cache/rbc-revs-v1 | |
|
558 | $ hg debugrevspec 'branch("re:a ")' | |
|
559 | 7 | |
|
560 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
561 | d8c2acdc229bf942fde1dfdbe8f9d933 .hg/cache/rbc-revs-v1 | |
|
562 | handle history mutations that doesn't change the tip node - this is a problem | |
|
563 | with the cache invalidation scheme used by branchmap | |
|
564 | $ hg log -r tip+b -T'{rev}:{node|short} {branch}\n' | |
|
565 | 14:f894c25619d3 c | |
|
566 | 13:e23b5505d1ad b | |
|
567 | $ hg bundle -q --all bu.hg | |
|
568 | $ hg --config extensions.strip= strip --no-b -qr -1: | |
|
569 | $ hg up -q tip | |
|
570 | $ hg branch | |
|
571 | b | |
|
572 | $ hg branch -q hacked | |
|
573 | $ hg ci --amend -qm 'hacked' | |
|
574 | $ hg pull -q bu.hg -r f894c25619d3 | |
|
575 | $ hg log -r tip+b -T'{rev}:{node|short} {branch}\n' | |
|
576 | 14:f894c25619d3 c | |
|
577 | 12:e3d49c0575d8 b | |
|
578 | $ hg debugrevspec 'branch("hacked")' | |
|
579 | 13 | |
|
580 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
581 | 22424d7e106c894336d9d705b0241bc5 .hg/cache/rbc-revs-v1 | |
|
582 | cleanup, restore old state | |
|
583 | $ hg --config extensions.strip= strip --no-b -qr -2: | |
|
584 | $ hg pull -q bu.hg | |
|
585 | $ rm bu.hg | |
|
586 | $ hg up -qr tip | |
|
587 | $ hg log -r tip -T'{rev}:{node|short}\n' | |
|
588 | 14:f894c25619d3 | |
|
589 | the cache file do not go back to the old state - it still contains the | |
|
590 | now unused 'hacked' branch name) | |
|
591 | $ hg debugrevspec 'branch("re:a ")' | |
|
592 | 7 | |
|
593 | $ "$TESTDIR/md5sum.py" .hg/cache/rbc-revs-v1 | |
|
594 | d8c2acdc229bf942fde1dfdbe8f9d933 .hg/cache/rbc-revs-v1 | |
|
595 | $ cat .hg/cache/rbc-names-v1 | |
|
596 | default\x00a\x00b\x00c\x00a branch name much longer than the default justification used by branches\x00hacked (no-eol) (esc) | |
|
597 | ||
|
523 | 598 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now