Show More
@@ -638,3 +638,120 b' on a 32MB system.' | |||
|
638 | 638 | updating the branch cache |
|
639 | 639 | (sent 4 HTTP requests and * bytes; received * bytes in responses) (glob) |
|
640 | 640 | $ killdaemons.py |
|
641 | ||
|
642 | Testing a clone bundles that involves revlog splitting (issue6811) | |
|
643 | ================================================================== | |
|
644 | ||
|
645 | $ cat >> $HGRCPATH << EOF | |
|
646 | > [format] | |
|
647 | > revlog-compression=none | |
|
648 | > use-persistent-nodemap=no | |
|
649 | > EOF | |
|
650 | ||
|
651 | $ hg init server-revlog-split/ | |
|
652 | $ cd server-revlog-split | |
|
653 | $ cat >> .hg/hgrc << EOF | |
|
654 | > [extensions] | |
|
655 | > clonebundles = | |
|
656 | > EOF | |
|
657 | $ echo foo > A | |
|
658 | $ hg add A | |
|
659 | $ hg commit -m 'initial commit' | |
|
660 | IMPORTANT: the revlogs must not be split | |
|
661 | $ ls -1 .hg/store/00manifest.* | |
|
662 | .hg/store/00manifest.i | |
|
663 | $ ls -1 .hg/store/data/_a.* | |
|
664 | .hg/store/data/_a.i | |
|
665 | ||
|
666 | do big enough update to split the revlogs | |
|
667 | ||
|
668 | $ $TESTDIR/seq.py 100000 > A | |
|
669 | $ mkdir foo | |
|
670 | $ cd foo | |
|
671 | $ touch `$TESTDIR/seq.py 10000` | |
|
672 | $ cd .. | |
|
673 | $ hg add -q foo | |
|
674 | $ hg commit -m 'split the manifest and one filelog' | |
|
675 | ||
|
676 | IMPORTANT: now the revlogs must be split | |
|
677 | $ ls -1 .hg/store/00manifest.* | |
|
678 | .hg/store/00manifest.d | |
|
679 | .hg/store/00manifest.i | |
|
680 | $ ls -1 .hg/store/data/_a.* | |
|
681 | .hg/store/data/_a.d | |
|
682 | .hg/store/data/_a.i | |
|
683 | ||
|
684 | Add an extra commit on top of that | |
|
685 | ||
|
686 | $ echo foo >> A | |
|
687 | $ hg commit -m 'one extra commit' | |
|
688 | ||
|
689 | $ cd .. | |
|
690 | ||
|
691 | Do a bundle that contains the split, but not the update | |
|
692 | ||
|
693 | $ hg bundle --exact --rev '::(default~1)' -R server-revlog-split/ --type gzip-v2 split-test.hg | |
|
694 | 2 changesets found | |
|
695 | ||
|
696 | $ cat > server-revlog-split/.hg/clonebundles.manifest << EOF | |
|
697 | > http://localhost:$HGPORT1/split-test.hg BUNDLESPEC=gzip-v2 | |
|
698 | > EOF | |
|
699 | ||
|
700 | start the necessary server | |
|
701 | ||
|
702 | $ "$PYTHON" $TESTDIR/dumbhttp.py -p $HGPORT1 --pid http.pid | |
|
703 | $ cat http.pid >> $DAEMON_PIDS | |
|
704 | $ hg -R server-revlog-split serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log | |
|
705 | $ cat hg.pid >> $DAEMON_PIDS | |
|
706 | ||
|
707 | Check that clone works fine | |
|
708 | =========================== | |
|
709 | ||
|
710 | Here, the initial clone will trigger a revlog split (which is a bit clowny it | |
|
711 | itself, but whatever). The split revlogs will see additionnal data added to | |
|
712 | them in the subsequent pull. This should not be a problem | |
|
713 | ||
|
714 | $ hg clone http://localhost:$HGPORT revlog-split-in-the-bundle | |
|
715 | applying clone bundle from http://localhost:$HGPORT1/split-test.hg | |
|
716 | adding changesets | |
|
717 | adding manifests | |
|
718 | adding file changes | |
|
719 | added 2 changesets with 10002 changes to 10001 files | |
|
720 | finished applying clone bundle | |
|
721 | searching for changes | |
|
722 | adding changesets | |
|
723 | adding manifests | |
|
724 | adding file changes | |
|
725 | added 1 changesets with 1 changes to 1 files | |
|
726 | new changesets e3879eaa1db7 | |
|
727 | 2 local changesets published | |
|
728 | updating to branch default | |
|
729 | 10001 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
730 | ||
|
731 | check the results | |
|
732 | ||
|
733 | $ cd revlog-split-in-the-bundle | |
|
734 | $ f --size .hg/store/00manifest.* | |
|
735 | .hg/store/00manifest.d: size=499037 | |
|
736 | .hg/store/00manifest.i: size=192 (missing-correct-output !) | |
|
737 | .hg/store/00manifest.i: size=128 (known-bad-output !) | |
|
738 | .hg/store/00manifest.i.s: size=64 (known-bad-output !) | |
|
739 | $ f --size .hg/store/data/_a.* | |
|
740 | .hg/store/data/_a.d: size=588917 | |
|
741 | .hg/store/data/_a.i: size=192 | |
|
742 | ||
|
743 | manifest should work | |
|
744 | ||
|
745 | $ hg files -r tip | wc -l | |
|
746 | \s*10001 (re) (missing-correct-output !) | |
|
747 | abort: 00manifest@4941afd6b8e298d932227572c5c303cbc14301bd: no node (known-bad-output !) | |
|
748 | 0 (known-bad-output !) | |
|
749 | ||
|
750 | file content should work | |
|
751 | ||
|
752 | $ hg cat -r tip A | wc -l | |
|
753 | \s*100001 (re) (missing-correct-output !) | |
|
754 | abort: 00manifest@4941afd6b8e298d932227572c5c303cbc14301bd: no node (known-bad-output !) | |
|
755 | 0 (known-bad-output !) | |
|
756 | ||
|
757 |
General Comments 0
You need to be logged in to leave comments.
Login now