Mercurial > hg
view tests/test-bundle-type.t @ 50706:0452af304808
stream-clone: add a v3 version of the protocol
This new version is less rigid regarding the extract number of files and number
of bytes to be actually transfered, it also lays the groundwork for other
improvements.
The format stays experimental, but this is an interesting base to build upon.
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Thu, 01 Jun 2023 17:39:22 +0100 |
parents | 385a4f8056e5 |
children | eac84af0c8cc |
line wrap: on
line source
bundle w/o type option $ hg init t1 $ hg init t2 $ cd t1 $ echo blablablablabla > file.txt $ hg ci -A -m commit_root adding file.txt $ echo kapoue > file.txt $ hg ci -m commit_1 $ echo scrabageul > file.txt $ hg ci -m commit_2 $ hg up 'desc("commit_root")' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo flagabalagla > file.txt $ hg ci -m commit_3 created new head $ echo aliofia > file.txt $ hg ci -m commit_4 $ echo alklqo > file.txt $ hg ci -m commit_5 $ echo peakfeo > file.txt $ hg ci -m commit_6 --secret $ hg phase --public --rev 'desc(commit_3)' $ hg log -GT '[{phase}] {desc|firstline}\n' @ [secret] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [public] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [public] commit_root XXX the bundle generation is defined by a discovery round here. So the secret changeset should be excluded. $ hg bundle ../b1.hg ../t2 searching for changes 7 changesets found (known-bad-output !) 6 changesets found (missing-correct-output !) $ cd .. $ hg -R t2 unbundle ./b1.hg adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) (known-bad-output !) added 6 changesets with 6 changes to 1 files (+1 heads) (missing-correct-output !) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg -R t2 up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved updated to "b9f5f740a8cd: commit_6" 1 other heads for branch "default" $ hg -R t2 log -GT '[{phase}] {desc|firstline}\n' @ [draft] commit_6 (known-bad-output !) | (known-bad-output !) o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root Unknown compression type is rejected $ hg init t3 $ hg -R t3 -q unbundle ./b1.hg $ hg -R t3 bundle -a -t unknown out.hg abort: unknown is not a recognized bundle specification (see 'hg help bundlespec' for supported values for --type) [10] $ hg -R t3 bundle -a -t unknown-v2 out.hg abort: unknown compression is not supported (see 'hg help bundlespec' for supported values for --type) [10] test bundle types ================= since we use --all, it is okay to include the secret changeset here. It is unfortunate that the phase information for the secret one is lost. $ testbundle() { > echo % test bundle type $1 > echo '===================================' > hg -R t1 bundle --all --type $1 ./b-$1.hg > f -q -B6 -D ./b-$1.hg; echo > hg debugbundle ./b-$1.hg > hg debugbundle --spec ./b-$1.hg > echo > hg init repo-from-type-$1 > hg unbundle -R repo-from-type-$1 ./b-$1.hg > hg -R repo-from-type-$1 log -GT '[{phase}] {desc|firstline}\n' > echo > } $ for t in "None" "bzip2" "gzip" "none-v2" "v2" "v1" "gzip-v1" "v3"; do > testbundle $t > done % test bundle type None =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) none-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type bzip2 =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {Compression: BZ} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) bzip2-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type gzip =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {Compression: GZ} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) gzip-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type none-v2 =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) none-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type v2 =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {Compression: BZ} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) bzip2-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type v1 =================================== 7 changesets found HG10BZ ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 bzip2-v1 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type gzip-v1 =================================== 7 changesets found HG10GZ ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 gzip-v1 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type v3 =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {Compression: BZ} changegroup -- {nbchanges: 7, targetphase: 2, version: 03} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) phase-heads -- {} (mandatory: True) 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d public a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 draft 2ea90778052ba7558fab36e3fd5d149512ff986b draft b9f5f740a8cd76700020e3903ee55ecff78bd3e5 secret bzip2-v2;cg.version=03 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (4 drafts, 1 secrets) (run 'hg heads' to see heads, 'hg merge' to merge) o [secret] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [public] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [public] commit_root Compression level can be adjusted for bundle2 bundles $ hg init test-complevel $ cd test-complevel $ cat > file0 << EOF > this is a file > with some text > and some more text > and other content > EOF $ cat > file1 << EOF > this is another file > with some other content > and repeated, repeated, repeated, repeated content > EOF $ hg -q commit -A -m initial $ hg bundle -a -t gzip-v2 gzip-v2.hg 1 changesets found $ f --size gzip-v2.hg gzip-v2.hg: size=468 $ hg --config experimental.bundlecomplevel=1 bundle -a -t gzip-v2 gzip-v2-level1.hg 1 changesets found $ f --size gzip-v2-level1.hg gzip-v2-level1.hg: size=475 $ hg --config experimental.bundlecomplevel.gzip=1 --config experimental.bundlelevel=9 bundle -a -t gzip-v2 gzip-v2-level1.hg 1 changesets found $ f --size gzip-v2-level1.hg gzip-v2-level1.hg: size=475 $ cd .. #if zstd $ for t in "zstd" "zstd-v2"; do > testbundle $t > done % test bundle type zstd =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {Compression: ZS} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) zstd-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root % test bundle type zstd-v2 =================================== 7 changesets found HG20\x00\x00 (esc) Stream params: {Compression: ZS} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 cache:rev-branch-cache -- {} (mandatory: False) zstd-v2 adding changesets adding manifests adding file changes added 7 changesets with 7 changes to 1 files (+1 heads) new changesets ac39af4a9f7d:b9f5f740a8cd (7 drafts) (run 'hg heads' to see heads, 'hg merge' to merge) o [draft] commit_6 | o [draft] commit_5 | o [draft] commit_4 | o [draft] commit_3 | | o [draft] commit_2 | | | o [draft] commit_1 |/ o [draft] commit_root Explicit request for zstd on non-generaldelta repos $ hg --config format.usegeneraldelta=false init nogd $ hg -q -R nogd pull t1 $ hg -R nogd bundle -a -t zstd nogd-zstd 6 changesets found zstd-v1 always fails $ hg -R t1 bundle -a -t zstd-v1 zstd-v1 abort: compression engine zstd is not supported on v1 bundles (see 'hg help bundlespec' for supported values for --type) [10] zstd supports threading $ hg init test-compthreads $ cd test-compthreads $ hg debugbuilddag +3 $ hg --config experimental.bundlecompthreads=1 bundle -a -t zstd-v2 zstd-v2-threaded.hg 3 changesets found $ cd .. #else zstd is a valid engine but isn't available $ hg -R t1 bundle -a -t zstd irrelevant.hg abort: compression engine zstd could not be loaded [255] #endif test garbage file $ echo garbage > bgarbage $ hg init tgarbage $ cd tgarbage $ hg pull ../bgarbage pulling from ../bgarbage abort: ../bgarbage: not a Mercurial bundle [255] $ cd .. test invalid bundle type $ cd t1 $ hg bundle -a -t garbage ../bgarbage abort: garbage is not a recognized bundle specification (see 'hg help bundlespec' for supported values for --type) [10] $ cd .. Test controlling the changegroup version $ hg -R t1 bundle --config experimental.changegroup3=yes -a -t v2 ./v2-cg-default.hg 7 changesets found $ hg debugbundle ./v2-cg-default.hg --part-type changegroup Stream params: {Compression: BZ} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 $ hg debugbundle ./v2-cg-default.hg --spec bzip2-v2 $ hg -R t1 bundle --config experimental.changegroup3=yes -a -t 'v2;cg.version=02' ./v2-cg-02.hg 7 changesets found $ hg debugbundle ./v2-cg-02.hg --part-type changegroup Stream params: {Compression: BZ} changegroup -- {nbchanges: 7, version: 02} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 $ hg debugbundle ./v2-cg-02.hg --spec bzip2-v2 $ hg -R t1 bundle --config experimental.changegroup3=yes -a -t 'v2;cg.version=03' ./v2-cg-03.hg 7 changesets found $ hg debugbundle ./v2-cg-03.hg --part-type changegroup Stream params: {Compression: BZ} changegroup -- {nbchanges: 7, version: 03} (mandatory: True) ac39af4a9f7d2aaa7d244720e57838be9bf63b03 901e97fadc587978ec52f2fa76af4aefc2d191e8 a8c3a1ed30eb71f03f476c5fa7ead831ef991a55 66e2c4b43e0cf8f0bdff0733a0b97ce57874e35d 624e609639853fe22c88d42a8fd1f53a0e9b7ebe 2ea90778052ba7558fab36e3fd5d149512ff986b b9f5f740a8cd76700020e3903ee55ecff78bd3e5 $ hg debugbundle ./v2-cg-03.hg --spec bzip2-v2;cg.version=03