# HG changeset patch # User Pierre-Yves David # Date 1681769272 -7200 # Node ID 2bb2a1ff4d8f8f98c392f6e7c965d82875ce80f4 # Parent 54f68495ab2a801abf184f1b34525ba66eb72b97 revlog-split: also check a case where bundle contains multiple changegroup This case is not affected, we remains in the same transaction. However it seems important to improve the test coverage around these "features". It also helped to assert the scop of the critical bug. diff -r 54f68495ab2a -r 2bb2a1ff4d8f tests/test-bundle2-multiple-changegroups.t --- a/tests/test-bundle2-multiple-changegroups.t Tue Apr 18 01:12:00 2023 +0200 +++ b/tests/test-bundle2-multiple-changegroups.t Tue Apr 18 00:07:52 2023 +0200 @@ -455,3 +455,103 @@ | o 0:4a2df7238c3b public test A + +Test that "split" from inline content works fine (cf issue6811) +=============================================================== + +setup +----- + +(create a compression free version where the split is easier to trigger) + + $ cat >> $HGRCPATH << EOF + > [format] + > revlog-compression=none + > use-persistent-nodemap=no + > EOF + + $ cd .. + $ hg clone --pull repo repo-test-split --quiet + pullop.cgresult is 2 + $ cat > repo-test-split/.hg/hgrc << EOF + > [extensions] + > bundle2=$TESTTMP/bundle2.py + > EOF + $ hg clone --pull repo-test-split clone-test-split --quiet + pullop.cgresult is 2 + $ cd repo-test-split + $ cat > .hg/hgrc << EOF + > [extensions] + > bundle2=$TESTTMP/bundle2.py + > EOF + + +IMPORTANT: must be a non-split revlog with only a .i + $ ls -1 .hg/store/00manifest.* + .hg/store/00manifest.i + $ ls -1 .hg/store/data/_a.* + .hg/store/data/_a.i + + $ $TESTDIR/seq.py 100000 > A + $ mkdir foo + $ cd foo + $ touch `$TESTDIR/seq.py 10000` + $ cd .. + $ hg add -q foo + $ hg commit -m 'split the manifest and one filelog' + + +IMPORTANT: now the revlogs must be split + $ ls -1 .hg/store/00manifest.* + .hg/store/00manifest.d + .hg/store/00manifest.i + $ ls -1 .hg/store/data/_a.* + .hg/store/data/_a.d + .hg/store/data/_a.i + +Add an extra commit on top of that + + $ echo foo >> A + $ hg commit -m 'one extra commit' + + +Actual testing +-------------- + + $ cd ../clone-test-split + +We now pull this in the clone the split should be in one changegroup, the update in another one + + $ hg pull + pulling from $TESTTMP/repo-test-split + searching for changes + remote: changegroup1 + adding changesets + adding manifests + adding file changes + remote: changegroup2 + adding changesets + adding manifests + adding file changes + added 2 changesets with 10002 changes to 10002 files + new changesets 5e5bf9c91085:900b170f70d0 + pullop.cgresult is 1 + (run 'hg update' to get a working copy) + +IMPORTANT: now the revlogs must be split + $ ls -1 .hg/store/00manifest.* + .hg/store/00manifest.d + .hg/store/00manifest.i + $ ls -1 .hg/store/data/_a.* + .hg/store/data/_a.d + .hg/store/data/_a.i + +manifest should work + + $ hg files -r tip | wc -l + \s*10007 (re) + +file content should work + + $ hg cat -r tip A | wc -l + \s*100001 (re)