Julian Foad <julianf...@btopenworld.com> writes: > Example 3: Swapping two directory levels > > | | > +--A --\ /--> +--A > | X | > +--B --/ \--> +--B > > 1. alter-dir A (children={}) ### Needed? > > 2. mv-away A/B (id=”original A/B”) > > 3. alter-dir / (children={A}) > > 4. mv-away A (id=”original A”) > > 5. mv-here A (id=”original A/B”) > > 6. alter-dir A (children={B}) ### Second alter-dir on same path, if (1) > was needed. > > 7. mv-here A/B (id=”original A”)
That's inconsistent: for A alter-dir is before mv-away while for A/B alter-dir is after mv-away. A more consistent set of steps would be: 1. alter-dir A/B (children={A}) 2. alter-dir A (children={}) 3. mv-away A/B (id="original A/B") 4. mv-away A (id="original A") 5. mv-here A (id="original A/B") 6. mv-here A/B (id="original A") Not sure whether 1 and 2 have any particular order. In the working copy receiver the alter-dir for A/B causes A to be added as incomplete in A/B; it becomes complete at step 6. I'm not sure whether the alter-dir for A that deletes a child causes anything to be marked. > There are two potential problems here: > > * We make an edit within subtree A (the “move-away A/B”) before moving A > > * The “alter-dir A” is performed twice In this case there is no need to perform alter-dir on A twice. As you pointed out when a copy replaces a mv-away it is still necessary to alter-dir two different nodes at the same path: 1. alter-dir A (children={...}) 2. mv-away A (id=...) 3. copy A (src=...) 4. alter-dir A (children={...}) [...] -- Philip Martin | Subversion Committer WANdisco // *Non-Stop Data*