Branko Čibej <brane_at_wandisco.com> writes:
> On 25.06.2013 13:42, Philip Martin wrote:
>> What about rotates that overlap. Consider a repository:
>>
>> svnadmin create repo
>> svn mkdir -mm --parents file://`pwd`/repo/A/B/C ^/X/Y/Z
>>
>> Rotate /A and /X/Y/Z and /X and /A/B/C:
>>
>> svn mv wc/A wc/A2
>> svn mv wc/X wc/X2
>> svn mv wc/A2/B/C wc/X
>> svn mv wc/X2/Y/Z wc/A
>> svn mv wc/A2/B wc/A/B
>> svn mv wc/X2/Y wc/X/Y
>> svn mv wc/A2 wc/X/Y/Z
>> svn mv wc/X2 wc/A/B/C
>
> What you're describing is not a simple rotation, since you're
> restructuring the tree quite a bit more than that. In any case there
> should certainly be no copy operations in the editor drive.
Perhaps the copy and delete should be combined into moves. So instead
of:
alter(.)
alter(A/B)
alter(X/Y)
rotate(A, X/Y/Z)
rotate(X, A/B/C)
alter(A) (pre-rotate X/Y/Z)
copy(A/B)
alter(X) (pre-rotate A/B/X)
copy(X/Y)
alter(A/B/C) (pre-rotate X)
delete(A/B/C/Y)
alter(X/Y/Z) (pre-rotate A)
delete(X/Y/Z/B)
we have:
alter(.)
alter(A/B)
alter(X/Y)
rotate(A, X/Y/Z)
rotate(X, A/B/C)
alter(A) (pre-rotate X/Y/Z)
alter(X/Y/Z) (pre-rotate A)
move(X/Y/Z/B, A/B)
alter(X) (pre-rotate A/B/X)
alter(A/B/C) (pre-rotate X)
move(A/B/C/Y, X/Y)
And we still have the problem that the receiver cannot process the
earlier rotates and moves until the final move is received.
--
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com
Received on 2013-06-25 22:17:36 CEST