[PATCH 2 of 2] bundlerepo: add support for treemanifests in cg3 bundles

Augie Fackler raf at durin42.com
Thu Aug 4 14:42:03 EDT 2016


Good catches, v2 forthcoming.

On Thu, Aug 4, 2016 at 2:39 PM, Martin von Zweigbergk
<martinvonz at google.com> wrote:
> On Thu, Aug 4, 2016 at 11:17 AM, Augie Fackler <raf at durin42.com> wrote:
>> # HG changeset patch
>> # User Augie Fackler <augie at google.com>
>> # Date 1470334433 14400
>> #      Thu Aug 04 14:13:53 2016 -0400
>> # Node ID 781e56c61c17a07164cd7cbcd4b319ce2ded511f
>> # Parent  c6da11db73e97aceabcc85c9f5bb893643bf01a7
>> bundlerepo: add support for treemanifests in cg3 bundles
>>
>> diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
>> --- a/mercurial/bundlerepo.py
>> +++ b/mercurial/bundlerepo.py
>> @@ -190,8 +190,8 @@ class bundlechangelog(bundlerevlog, chan
>>              self.filteredrevs = oldfilter
>>
>>  class bundlemanifest(bundlerevlog, manifest.manifest):
>> -    def __init__(self, opener, bundle, linkmapper):
>> -        manifest.manifest.__init__(self, opener)
>> +    def __init__(self, opener, bundle, linkmapper, dir=''):
>> +        manifest.manifest.__init__(self, opener, dir=dir)
>>          bundlerevlog.__init__(self, opener, self.indexfile, bundle,
>>                                linkmapper)
>>
>> @@ -332,7 +332,12 @@ class bundlerepository(localrepo.localre
>>          # XXX: hack to work with changegroup3, but we still don't handle
>>          # tree manifests correctly
>
> No longer valid, right?
>
>>          if self.bundle.version == "03":
>> -            self.bundle.filelogheader()
>> +            dirheader = self.bundle.filelogheader()
>> +            while dirheader:
>> +                d = dirheader["filename"]
>> +                self.bundledirlogs = bundlemanifest(
>> +                    self.svfs, self.bundle, linkmapper, dir=d)
>> +                dirheader = self.bundle.filelogheader()
>>          self.filestart = self.bundle.tell()
>>          return m
>>
>> diff --git a/tests/test-treemanifest.t b/tests/test-treemanifest.t
>> --- a/tests/test-treemanifest.t
>> +++ b/tests/test-treemanifest.t
>> @@ -313,6 +313,15 @@ Stripping and recovering changes should
>>       rev    offset  length  delta linkrev nodeid       p1           p2
>>         0         0     127     -1       4 064927a0648a 000000000000 000000000000
>>         1       127     111      0       5 25ecb8cb8618 000000000000 000000000000
>> +  $ hg incoming --traceback .hg/strip-backup/*
>
> I suspect --traceback was there while you were debugging, but I think
> we usually leave it from out tests.
>
>> +  comparing with .hg/strip-backup/*-backup.hg (glob)
>> +  searching for changes
>> +  changeset:   6:51cfd7b1e13b
>> +  tag:         tip
>> +  user:        test
>> +  date:        Thu Jan 01 00:00:00 1970 +0000
>> +  summary:     modify dir1/a
>> +
>
> Should also be able to pull from the bundle, right? Can you add a test
> for that too?
>
>>    $ hg unbundle -q .hg/strip-backup/*
>>    $ hg debugindex --dir dir1
>>       rev    offset  length  delta linkrev nodeid       p1           p2
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel at mercurial-scm.org
>> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list