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: 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