Greg Stein <gst...@gmail.com> writes: > On Wed, Sep 4, 2013 at 10:43 AM, Apache subversion Wiki > <comm...@subversion.apache.org> wrote: >>... >> Given these constraints, not all combinations of moves can be expressed >> using a “move source to destination” operation, with or without a “rotate” >> operation, without using temporary paths. > > I'm not buying that you need two operations. The "move uses initial > state" tweak seems fully adequate and gets us the single-op/atomicity > principle that Ev2 was designed under.
At some point we have to create temporary locations and I suppose it might be possible for the receiver to generate them as necessary. However I'm still struggling to understand the ordering of moves and alter_dirs so I can't determine whether that is practical or sensible. Given this example: svn mv A X svn mv X/B/C A svn mv X/B A/B svn mv X A/B/C svn ci or the equivalent: svn mv A/B/C X svn mv A/B X/B svn mv A X/B/C svn mv X A cvn ci we have this set of Ev2 moves in some order: move A, A/B/C move A/B, A/B move A/B/C, A What is the correct order for these operations? I guess there may be more than one valid order since I showed two possible temporaries, perhaps both move A, A/B/C move A/B, A/B move A/B/C, A and move A/B/C, A move A/B, A/B move A, A/B/C are valid. Or perhaps the alter_dir ordering rules exclude one? What about alter_dir? I think the rule is that alter_dir on a directory should occur before add or delete affects the children of the directory. There is also a rule: * - The ancestor of an added, copied-here, moved-here, or * modified node may not be deleted. The ancestor may not be moved * (instead: perform the move, *then* the edits). It's not clear where alter_dir should occur w.r.t the moves in my example. Does alter_dir count as an edit that should occur after move? Do we pass initial state paths: alter_dir ., children='A' alter_dir A, children='' alter_dir A/B, children='C' alter_dir A/B/C, children='B' or final_state paths: alter_dir ., children='A' alter_dir A, children='B' alter_dir A/B, children='C' alter_dir A/B/C, children='' -- Philip Martin | Subversion Committer WANdisco // *Non-Stop Data*