exchange: set 'treemanifest' param on pushed changegroups too
In
5c0fd878779c (treemanifests: set bundle2 part parameter indicating
treemanifest, 2016-01-08), I didn't realize I had to set the parameter
separately for getbundle and unbundle. Having the parameter there on
push allows us to push to an empty repo and have the requirements
updated correctly.
--- a/mercurial/exchange.py Mon Jan 25 11:37:02 2016 -0800
+++ b/mercurial/exchange.py Fri Jan 22 16:31:50 2016 -0800
@@ -717,6 +717,8 @@
cgpart = bundler.newpart('changegroup', data=cg)
if version is not None:
cgpart.addparam('version', version)
+ if 'treemanifest' in pushop.repo.requirements:
+ cgpart.addparam('treemanifest', '1')
def handlereply(op):
"""extract addchangegroup returns from server reply"""
cgreplies = op.records.getreplies(cgpart.id)
--- a/tests/test-treemanifest.t Mon Jan 25 11:37:02 2016 -0800
+++ b/tests/test-treemanifest.t Fri Jan 22 16:31:50 2016 -0800
@@ -312,9 +312,28 @@
1
+foo
+Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
+
+ $ cd ..
+ $ hg init empty-repo
+ $ cat << EOF >> empty-repo/.hg/hgrc
+ > [experimental]
+ > changegroup3=yes
+ > EOF
+ $ grep treemanifest empty-repo/.hg/requires
+ [1]
+ $ hg push -R repo -r 0 empty-repo
+ pushing to empty-repo
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 2 changes to 2 files
+ $ grep treemanifest empty-repo/.hg/requires
+ treemanifest
+
Create deeper repo with tree manifests.
- $ cd ..
$ hg --config experimental.treemanifest=True init deeprepo
$ cd deeprepo