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