tests/test-clonebundles.t
branchstable
changeset 50346 54f68495ab2a
parent 48693 de3ac3d2c60b
child 50348 f952be90b051
equal deleted inserted replaced
50345:ae9a15267315 50346:54f68495ab2a
   636   2 local changesets published
   636   2 local changesets published
   637   calling hook changegroup.lfiles: hgext.largefiles.reposetup.checkrequireslfiles
   637   calling hook changegroup.lfiles: hgext.largefiles.reposetup.checkrequireslfiles
   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