D7026: treemanifest: move out of experimental
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Tue Oct 8 21:04:59 UTC 2019
pulkit created this revision.
Herald added a reviewer: durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
In recent sprint, we discussed that treemanifest should be moved out of
experimental. The feature has been used inside Google, Facebook in some forms
and was used inside Yandex too for narrow clones.
There is an issue with diffing of large treemanifests and to fix that some
Python code needs to be rewritted in C/Rust. This I think is not a blocker for
taking treemanifest out of experimental.
This patch renames config `experimental.treemanifest` to `storage.treemanifest`.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D7026
AFFECTED FILES
mercurial/changegroup.py
mercurial/configitems.py
mercurial/localrepo.py
tests/test-narrow-clone-stream.t
tests/test-narrow-commit.t
tests/test-narrow-merge.t
tests/test-narrow-share.t
tests/test-narrow-sparse.t
tests/test-narrow-strip.t
tests/test-narrow-trackedcmd.t
tests/test-narrow-widen-no-ellipsis.t
tests/test-narrow-widen.t
tests/test-narrow.t
tests/test-strip-cross.t
tests/test-treemanifest.t
tests/test-upgrade-repo.t
CHANGE DETAILS
diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t
--- a/tests/test-upgrade-repo.t
+++ b/tests/test-upgrade-repo.t
@@ -35,7 +35,7 @@
Do not yet support upgrading treemanifest repos
- $ hg --config experimental.treemanifest=true init treemanifest
+ $ hg --config storage.treemanifest=true init treemanifest
$ hg -R treemanifest debugupgraderepo
abort: cannot upgrade repository; unsupported source requirement: treemanifest
[255]
@@ -43,7 +43,7 @@
Cannot add treemanifest requirement during upgrade
$ hg init disallowaddedreq
- $ hg -R disallowaddedreq --config experimental.treemanifest=true debugupgraderepo
+ $ hg -R disallowaddedreq --config storage.treemanifest=true debugupgraderepo
abort: cannot upgrade repository; do not support adding requirement: treemanifest
[255]
diff --git a/tests/test-treemanifest.t b/tests/test-treemanifest.t
--- a/tests/test-treemanifest.t
+++ b/tests/test-treemanifest.t
@@ -5,7 +5,7 @@
Set up repo
- $ hg --config experimental.treemanifest=True init repo
+ $ hg --config storage.treemanifest=True init repo
$ cd repo
Requirements get set on init
@@ -222,7 +222,7 @@
Create clone with tree manifests enabled
$ cd ..
- $ hg clone --config experimental.treemanifest=1 \
+ $ hg clone --config storage.treemanifest=1 \
> http://localhost:$HGPORT repo-mixed -r 1
adding changesets
adding manifests
@@ -305,7 +305,7 @@
0 4 064927a0648a 000000000000 000000000000
1 5 25ecb8cb8618 000000000000 000000000000
$ echo 2 > dir1/a
- $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
+ $ hg --config storage.treemanifest=False ci -qm 'modify dir1/a'
$ hg debugindex --dir dir1
rev linkrev nodeid p1 p2
0 4 064927a0648a 000000000000 000000000000
@@ -392,7 +392,7 @@
Pushing to an empty repo works
- $ hg --config experimental.treemanifest=1 init clone
+ $ hg --config storage.treemanifest=1 init clone
$ grep treemanifest clone/.hg/requires
treemanifest
$ hg push -R repo clone
@@ -414,7 +414,7 @@
Create deeper repo with tree manifests.
- $ hg --config experimental.treemanifest=True init deeprepo
+ $ hg --config storage.treemanifest=True init deeprepo
$ cd deeprepo
$ mkdir .A
@@ -673,7 +673,7 @@
$ cat hg.pid >> $DAEMON_PIDS
$ cd ..
We can clone even with the knob turned off and we'll get a treemanifest repo.
- $ hg clone --config experimental.treemanifest=False \
+ $ hg clone --config storage.treemanifest=False \
> --config experimental.changegroup3=True \
> http://localhost:$HGPORT deepclone
requesting all changes
@@ -850,7 +850,7 @@
$ mkdir grafted-dir-repo
$ cd grafted-dir-repo
- $ hg --config experimental.treemanifest=1 init
+ $ hg --config storage.treemanifest=1 init
$ mkdir dir
$ echo a > dir/file
$ echo a > file
@@ -868,7 +868,7 @@
created new head
$ cd ..
- $ hg --config experimental.treemanifest=1 clone --pull -r 1 \
+ $ hg --config storage.treemanifest=1 clone --pull -r 1 \
> grafted-dir-repo grafted-dir-repo-clone
adding changesets
adding manifests
diff --git a/tests/test-strip-cross.t b/tests/test-strip-cross.t
--- a/tests/test-strip-cross.t
+++ b/tests/test-strip-cross.t
@@ -164,13 +164,13 @@
Now a similar test for a non-root manifest revlog
$ cat >> $HGRCPATH <<EOF
- > [experimental]
+ > [storage]
> treemanifests = yes
> EOF
$ mkdir treemanifests
$ cd treemanifests
$
- $ hg --config experimental.treemanifest=True init orig
+ $ hg --config storage.treemanifest=True init orig
$ cd orig
$ commit 'dir/file'
$ commit 'dir/other'
@@ -179,7 +179,7 @@
$ commit 'otherdir dir/file'
$ commit 'otherdir dir/other' 'otherdir dir/file'
$ cd ..
- $ hg --config experimental.treemanifest=True clone -q -U -r 1 -r 2 -r 3 -r 4 orig crossed
+ $ hg --config storage.treemanifest=True clone -q -U -r 1 -r 2 -r 3 -r 4 orig crossed
$ cd crossed
$ hg debugindex --dir dir
rev linkrev nodeid p1 p2
@@ -190,7 +190,7 @@
$ cd ..
$ for i in 2 3; do
- > hg --config experimental.treemanifest=True clone -q -U --pull crossed $i
+ > hg --config storage.treemanifest=True clone -q -U --pull crossed $i
> echo "% Trying to strip revision $i"
> hg --cwd $i strip $i
> echo "% Verifying"
diff --git a/tests/test-narrow.t b/tests/test-narrow.t
--- a/tests/test-narrow.t
+++ b/tests/test-narrow.t
@@ -17,7 +17,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-widen.t b/tests/test-narrow-widen.t
--- a/tests/test-narrow-widen.t
+++ b/tests/test-narrow-widen.t
@@ -3,7 +3,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-widen-no-ellipsis.t b/tests/test-narrow-widen-no-ellipsis.t
--- a/tests/test-narrow-widen-no-ellipsis.t
+++ b/tests/test-narrow-widen-no-ellipsis.t
@@ -3,7 +3,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-trackedcmd.t b/tests/test-narrow-trackedcmd.t
--- a/tests/test-narrow-trackedcmd.t
+++ b/tests/test-narrow-trackedcmd.t
@@ -3,7 +3,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-strip.t b/tests/test-narrow-strip.t
--- a/tests/test-narrow-strip.t
+++ b/tests/test-narrow-strip.t
@@ -12,7 +12,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-sparse.t b/tests/test-narrow-sparse.t
--- a/tests/test-narrow-sparse.t
+++ b/tests/test-narrow-sparse.t
@@ -10,7 +10,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-share.t b/tests/test-narrow-share.t
--- a/tests/test-narrow-share.t
+++ b/tests/test-narrow-share.t
@@ -4,7 +4,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-merge.t b/tests/test-narrow-merge.t
--- a/tests/test-narrow-merge.t
+++ b/tests/test-narrow-merge.t
@@ -4,7 +4,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-commit.t b/tests/test-narrow-commit.t
--- a/tests/test-narrow-commit.t
+++ b/tests/test-narrow-commit.t
@@ -4,7 +4,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/tests/test-narrow-clone-stream.t b/tests/test-narrow-clone-stream.t
--- a/tests/test-narrow-clone-stream.t
+++ b/tests/test-narrow-clone-stream.t
@@ -6,7 +6,7 @@
#if tree
$ cat << EOF >> $HGRCPATH
- > [experimental]
+ > [storage]
> treemanifest = 1
> EOF
#endif
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -3515,7 +3515,7 @@
# experimental config: format.use-side-data
if ui.configbool(b'format', b'use-side-data'):
requirements.add(SIDEDATA_REQUIREMENT)
- if ui.configbool(b'experimental', b'treemanifest'):
+ if ui.configbool(b'storage', b'treemanifest'):
requirements.add(b'treemanifest')
revlogv2 = ui.config(b'experimental', b'revlogv2')
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -679,9 +679,6 @@
b'experimental', b'sparse-read.min-gap-size', default=b'65K',
)
coreconfigitem(
- b'experimental', b'treemanifest', default=False,
-)
-coreconfigitem(
b'experimental', b'update.atomic-file', default=False,
)
coreconfigitem(
@@ -1056,6 +1053,10 @@
b'storage', b'revlog.zstd.level', default=None,
)
coreconfigitem(
+ b'storage', b'treemanifest', default=False,
+ alias=[(b'experimental', b'treemanifest')],
+)
+coreconfigitem(
b'server', b'bookmarks-pushkey-compat', default=True,
)
coreconfigitem(
diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -1468,7 +1468,7 @@
needv03 = False
if (
repo.ui.configbool(b'experimental', b'changegroup3')
- or repo.ui.configbool(b'experimental', b'treemanifest')
+ or repo.ui.configbool(b'storage', b'treemanifest')
or b'treemanifest' in repo.requirements
):
# we keep version 03 because we need to to exchange treemanifest data
To: pulkit, durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list