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
--- 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',
--- 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,
--- 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