# HG changeset patch # User Pierre-Yves David # Date 1678285402 -3600 # Node ID d6846273649201b6b51339fa1e7f3703ecb7d0c6 # Parent b61e5f763e013585f524a7aecbda3ac427d77aba bundle: introduce a "v3" spec This is a small update from "v2", we use the freshly out of experimental changelog version "03' format (alignment with bundle version is a coincidence) and we now bundle phases by default. We shall use v3 as the default bundle type later, when changegroup version '03' is a bit more established diff -r b61e5f763e01 -r d68462736492 mercurial/bundlecaches.py --- a/mercurial/bundlecaches.py Wed Mar 08 15:43:23 2023 +0100 +++ b/mercurial/bundlecaches.py Wed Mar 08 15:23:22 2023 +0100 @@ -60,6 +60,7 @@ _bundlespeccgversions = { b'v1': b'01', b'v2': b'02', + b'v3': b'03', b'packed1': b's1', b'bundle2': b'02', # legacy } @@ -82,6 +83,14 @@ b'tagsfnodescache': True, b'revbranchcache': True, }, + b'v3': { + b'changegroup': True, + b'cg.version': b'03', + b'obsolescence': False, + b'phases': True, + b'tagsfnodescache': True, + b'revbranchcache': True, + }, b'streamv2': { b'changegroup': False, b'cg.version': b'02', diff -r b61e5f763e01 -r d68462736492 mercurial/commands.py --- a/mercurial/commands.py Wed Mar 08 15:43:23 2023 +0100 +++ b/mercurial/commands.py Wed Mar 08 15:23:22 2023 +0100 @@ -1714,8 +1714,9 @@ bundlespec.set_param( b'obsolescence-mandatory', obs_mand_cfg, overwrite=False ) - phases_cfg = cfg(b'experimental', b'bundle-phases') - bundlespec.set_param(b'phases', phases_cfg, overwrite=False) + if not bundlespec.params.get(b'phases', False): + phases_cfg = cfg(b'experimental', b'bundle-phases') + bundlespec.set_param(b'phases', phases_cfg, overwrite=False) bundle2.writenewbundle( ui, diff -r b61e5f763e01 -r d68462736492 tests/test-bundle-type.t --- a/tests/test-bundle-type.t Wed Mar 08 15:43:23 2023 +0100 +++ b/tests/test-bundle-type.t Wed Mar 08 15:23:22 2023 +0100 @@ -109,7 +109,7 @@ > echo > } - $ for t in "None" "bzip2" "gzip" "none-v2" "v2" "v1" "gzip-v1"; do + $ for t in "None" "bzip2" "gzip" "none-v2" "v2" "v1" "gzip-v1" "v3"; do > testbundle $t > done % test bundle type None @@ -365,6 +365,47 @@ 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 + 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