[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Partial fix for merge_tests.py 66 failure on mergeinfoless-copies branch

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: 2007-11-21 18:25:41 CET

Paul Burba wrote:
>> -----Original Message-----
>> From: C. Michael Pilato [mailto:cmpilato@collab.net]
>> Sent: Wednesday, November 21, 2007 1:27 AM
>> To: Paul Burba
>> Cc: dev@subversion.tigris.org; cmpilato@tigris.org
>> Subject: Re: Partial fix for merge_tests.py 66 failure on
>> mergeinfoless-copies branch
>>
>> Paul Burba wrote:
>>> Try out this patch, it should fix the problem you mentioned -- the
>>> trick is *removing* paths from expected_disk rather than
>> tweaking them
>>> -- I knew I'd run afoul of this before, it just took a long
>> while to
>>> recall what the fix was :-(
>> Ah... gotcha!
>>
>>> Unfortunately merge test 66 still fails on the last reverse
>> merge, the
>>> A_COPY ends up with no mergeinfo, rather than it's pristine empty
>>> mergeinfo. I hven't had a chance to look into that any further yet.
>> Isn't that due to elision?
>>
>> I'm not convinced it's correct,
>> but isn't that the likely cause?
>
> Ah, now I understand what you meant by your comment in merge test 66.
> And yes, its svn_client__elide_mergeinfo() that is removing the
> mergeinfo at the end of do_merge().
>
> There is something obviously wrong with the elision code since there is
> nowhere for any mergeinfo on 'A_COPY', whatever it may be, to elide to!
> I'll fix that.
>
> Some other questions/problems...
>
> If 'A_COPY's mergeinfo did have a parent to elide to, elision might
> still occur, is this ever correct? It depends a bit on how copy works
> now and gets to something I'm a bit confused on (and I suspect this is
> your real question about the correctness of elision in this case):
>
> If we copy X to Y, and X has no explicit or
> inherited mergeinfo, then Y has empty mergeinfo.
>
> Is there a scenario in which Y might correctly
> end up with no mergeinfo or does it always need
> at least empty mergeinfo?

There are a few things about mergeinfo elision that I don't understand. One
is this one -- should empty mergeinfo elide into absent mergeinfo, ever. I
suspect not.

The other is about empty mergeinfo eliding into empty mergeinfo. Apparently
you and Dan expected that to happen, but I'm not sure why. IIUC, empty
mergeinfo means, "I don't want to inherit my parent's mergeinfo, regardless
of what that mergeinfo is." The fact that my parent also doesn't want to
inherit from *his* parent does not suddenly mean that my own restrictions
about inheritance have changed, does it? [ Though, it certainly appears to
indicate a very dysfunctional family :-) ]

> There is something else going on that needs consideration: In merge test
> 66 right before the final merge of -r6:3 the mergeinfo on A_COPY is not
> empty, but is for path 'A' with no ranges:
>
>> svn pl -vR merge_tests-66\A_COPY
> Properties on 'merge_tests-66\A_COPY':
> svn:mergeinfo : /A:
>
> This is different from the pristine empty mergeinfo on A_COPY. Instead
> this should be truly empty mergeinfo:
>
>> svn pl -vR merge_tests-66\A_COPY
> Properties on 'merge_tests-66\A_COPY':
> svn:mergeinfo :
>
> This is important because the elision code either leaves the mergeinfo
> on a path alone, or removes it entirely. If we left it alone in this
> case we still end up with modified mergeinfo on A_COPY.

Ooh! I hadn't noticed this. Good catch.

-- 
C. Michael Pilato <cmpilato@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Received on Wed Nov 21 18:26:06 2007

This is an archived mail posted to the Subversion Dev mailing list.