On Tue, Jun 25, 2013 at 4:17 PM, Philip Martin
<philip.mar...@wandisco.com> wrote:
> Branko Čibej <br...@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:

You're affecting six nodes, so I think you should be able to pack this
down into touching 6 nodes once each. I believe this will work:

move(A/B, X/Y/Z/B)
rotate(A, X/Y/Z)
move(X/Y, A/B/C/Y)
rotate(X, A/B/C)

Insert appropriate alter() calls. Each operation can be performed as
it arrives, as the later calls depend upon those moves/rotates.

Cheers,
-g

Reply via email to