Show More
@@ -638,3 +638,120 b' on a 32MB system.' | |||||
638 | updating the branch cache |
|
638 | updating the branch cache | |
639 | (sent 4 HTTP requests and * bytes; received * bytes in responses) (glob) |
|
639 | (sent 4 HTTP requests and * bytes; received * bytes in responses) (glob) | |
640 | $ killdaemons.py |
|
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