# HG changeset patch # User Martin von Zweigbergk # Date 1453509110 28800 # Node ID cabac7dfc6214e915908912678ff8e84f5dc7488 # Parent 3d3b4ac369f2352a48114a8dd73a25da3766e957 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. diff -r 3d3b4ac369f2 -r cabac7dfc621 mercurial/exchange.py --- 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) diff -r 3d3b4ac369f2 -r cabac7dfc621 tests/test-treemanifest.t --- 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