[PATCH 1 of 2] convert: temporarily disable hg p2 optimization

Mads Kiilerich mads at kiilerich.com
Thu Oct 22 05:16:08 CDT 2015


On 10/16/2015 11:14 PM, Durham Goode wrote:
>
>
> On 10/16/15 2:11 PM, Durham Goode wrote:
>>
>>
>> On 10/15/15 2:46 PM, Mads Kiilerich wrote:
>>> # HG changeset patch
>>> # User Mads Kiilerich <madski at unity3d.com>
>>> # Date 1444945384 -7200
>>> #      Thu Oct 15 23:43:04 2015 +0200
>>> # Node ID 8c7010f12530b69c86d2bcdd70098ced582ece49
>>> # Parent  07db7e95c464537aeb2dd7aba39de0813eaffd04
>>> convert: temporarily disable hg p2 optimization
>>>
>>> Disabling the optimization gives a test change. That proves that the 
>>> optimized
>>> code path is wrong. That seems to have been introduced in a75d24539aba.
>>>
>>> diff --git a/hgext/convert/hg.py b/hgext/convert/hg.py
>>> --- a/hgext/convert/hg.py
>>> +++ b/hgext/convert/hg.py
>>> @@ -221,7 +221,7 @@ class mercurial_sink(converter_sink):
>>>           files = dict(files)
>>>             def getfilectx(repo, memctx, f):
>>> -            if p2ctx and f in p2files and f not in copies:
>>> +            if p2ctx and f in p2files and f not in copies and False:
>>>                   self.ui.debug('reusing %s from p2\n' % f)
>>>                   try:
>>>                       return p2ctx[f]
>>> diff --git a/tests/test-convert-filemap.t 
>>> b/tests/test-convert-filemap.t
>>> --- a/tests/test-convert-filemap.t
>>> +++ b/tests/test-convert-filemap.t
>>> @@ -723,11 +723,11 @@ test converting merges into a repo that
>>>     $ hg -R merge-test2 manifest -r tip
>>>     converted/a
>>>     converted/b
>>> -  x
>>>     $ hg -R merge-test2 log -G -T '{shortest(node)} {desc}\n{files % 
>>> "- {file}\n"}\n'
>>> -  o    6eaa merge a & b
>>> +  o    0390 merge a & b
>>>     |\   - converted/a
>>>     | |  - toberemoved
>>> +  | |  - x
>>>     | |
>>>     | o  2995 add b
>>>     | |  - converted/b
>> I don't understand what you're saying here.
>>
>> In the test, it takes merge-test1 (which adds file 'x' in rev 1), and 
>> it calls convert in such a way that it imports the contents of 
>> merge-test2 on top of the 'x' commit.  That means 'x' should not be 
>> affected by the convert, and that it should appear in the tip 
>> manifest, as it currently does.
>>
>> Your change makes the convert delete 'x', when 'x' isn't related to 
>> the incoming changes in any way.  So am I missing something?
> I got my repo-names reversed.  Here's the same text with the correct 
> repo names:
>
> In the test, it takes merge-test1 (which edits files 'a' and 'b') and 
> merge-test2 (which adds 'x'), and it calls convert in such a way that 
> it imports the contents of merge-test1 on top of the 'x' commit.  That 
> means 'x' should not be affected by the convert, and that it should 
> appear in the tip manifest, as it currently does.
>
> Your change makes the convert delete 'x', when 'x' isn't related to 
> the incoming changes in any way.  So am I missing something?

First, do you agree that the p2clean part just is an optimization? Or 
should we intentionally put different semantics in that?

/Mads



More information about the Mercurial-devel mailing list