Greg Stein <gst...@gmail.com> writes:

> On Thu, Apr 26, 2012 at 10:06, Apache subversion Wiki
> <comm...@subversion.apache.org> wrote:
>>...
>> + == Problem Cases ==
>> +
>> + Move A to B:
>> +
>> + || op-depth || local-relpath || presence     || revision || repos || 
>> moved-to ||
>> + ||  0       ||    A          || normal       ||   1      ||   A   ||       
>>    ||
>> + ||  0       ||    A/f        || normal       ||   1      ||   A/f ||       
>>    ||
>> + ||  1       ||    A          || base-deleted ||   1      ||   A   ||   B   
>>    ||
>> + ||  1       ||    A/f        || base-deleted ||   1      ||   A/f ||       
>>    ||
>> + ||  1       ||    B          || normal       ||   1      ||   A   ||       
>>    ||
>> + ||  1       ||    B/f        || normal       ||   1      ||   A/f ||       
>> ||
>> +
>> + Delete B/f and replace with something copied from elsewhere:
>> +
>> + || op-depth || local-relpath || presence     || revision || repos || 
>> moved-to ||
>> + ||  0       ||    A          || normal       ||   1      ||   A   ||       
>>    ||
>> + ||  0       ||    A/f        || normal       ||   1      ||   A/f ||       
>>    ||
>> + ||  1       ||    A          || base-deleted ||   1      ||   A   ||   B   
>>    ||
>> + ||  1       ||    A/f        || base-deleted ||   1      ||   A/f ||       
>>    ||
>> + ||  1       ||    B          || normal       ||   1      ||   A   ||       
>>    ||
>> + ||  1       ||    B/f        || normal       ||   1      ||   A/f ||       
>>    ||
>> + ||  2       ||    B/f        || normal       ||   1      ||   X   ||       
>>    ||
>
> Wouldn't the B/f line at op_depth==1 have not-present to indicate that
> it was deleted?

No.  Before delete:

op-depth local-relpath presence
   1        B           normal
   1        B/f         normal

Delete B/f:

op-depth local-relpath presence
   1        B           normal
   1        B/f         normal
   2        B/f         base-deleted

Replace B/f

op-depth local-relpath presence
   1        B           normal
   1        B/f         normal
   2        B/f         normal

>> +
>> + Now update A and go through the mixed-revision base tree: we can't 
>> represent the mixed-revision copy since that would require B/f at op-depth=2 
>> to record both A/f@2 and X@1.
>
> Hm? I would expect the A/f@2 to be in the op_depth==1 line, and B/f at
> op_depth==2 to continue to refer to X@1.

No.  When we have mixed-rev A and A/f and A gets moved to B the result
is:

op-depth local-relpath presence     revision
   0        A           normal         1
   0        A/f         normal         2
   1        B           normal         1
   1        B/f         not-present 
   2        B/f         normal         2

and that's a problem if op-depth=2 B/f is already used for somethin
else.

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com

Reply via email to