[PATCH STABLE] exchange: set 'treemanifest' param on pushed changegroups too

Martin von Zweigbergk martinvonz at google.com
Fri Jan 22 19:23:24 CST 2016


On Fri, Jan 22, 2016 at 5:17 PM Martin von Zweigbergk <martinvonz at google.com>
wrote:

> This will conflict with my changes already on the clowncopter, but simply
> concatenating the hunks will work. Sorry about the trouble.
>
> On Fri, Jan 22, 2016 at 5:16 PM Martin von Zweigbergk <
> martinvonz at google.com> wrote:
>
>> # HG changeset patch
>> # User Martin von Zweigbergk <martinvonz at google.com>
>> # Date 1453509110 28800
>> #      Fri Jan 22 16:31:50 2016 -0800
>> # Branch stable
>> # Node ID 4aabe694f4ee90ac9000adbf9cae2b328cd4ec6d
>> # Parent  4c6053a6b17d682b34fb88bbeb5e94ed9085d900
>> 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 --git a/mercurial/exchange.py b/mercurial/exchange.py
>> --- a/mercurial/exchange.py
>> +++ b/mercurial/exchange.py
>> @@ -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 --git a/tests/test-treemanifest.t b/tests/test-treemanifest.t
>> --- a/tests/test-treemanifest.t
>> +++ b/tests/test-treemanifest.t
>> @@ -285,6 +285,26 @@
>>         1       127     111      0       5 25ecb8cb8618 000000000000
>> 000000000000
>>         2       238      55      1       6 5b16163a30c6 25ecb8cb8618
>> 000000000000
>>
>> +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 ..
>>
>
...and this last line in the context should have been removed (unrelated to
the conflict). It's probably best if I just resend when my clowncopter
patches have landed in Matt's repo.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20160123/3aba136f/attachment.html>


More information about the Mercurial-devel mailing list