changeset 27938:cabac7dfc621 stable

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.
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 22 Jan 2016 16:31:50 -0800
parents 3d3b4ac369f2
children 7ed3a3c0cef1
files mercurial/exchange.py tests/test-treemanifest.t
diffstat 2 files changed, 22 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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