Julian Foad <julianf...@btopenworld.com> writes:

>> 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={...})
>
> Well, that depends.  There may be no need to issue the alter-dir on
> the original 'A' at this stage, we could wait until it arrives at its
> final path (move-here B (id="original A"), then alter-dir B).

I was initially thinking that we could require alter-dir to happen
before mv-away, then the alter-dir path would always be a path in the
original tree.  However that doesn't work for copies where alter-dir has
to happen after the copy, or for moves from copies where, even if
alter-dir happens before the move, the path is still not a path in the
original tree.

So we have to allow

        copy A B
        alter-dir B (children={...})

which means there is little reason to require

        alter-dir X (children={...})
        mv-away X (id="original X")
        mv-here Y (id="original X")

and prohibit

        mv-away X (id="original X")
        mv-here Y (id="original X")
        alter-dir Y (children={...})

Another issue, there can be mv-aways inside copies and that allows
multiple mv-away at the same path:

        svn cp X A
        svn mv A/B/C C1
        svn rm A/B
        svn cp Y A/B
        svn mv A/B/C C2

Here we have two mv-aways for A/B/C, one for the C copied from X/B/C and
one for the C copied from Y/C.

       alter-dir / (children={..., C1, C2})
       copy X A
       mv-away A/B/C (id="something")
       mv-here C1 (id="something")
       copy Y A/B (replaces=...)
       mv-away A/B/C (id="something else")
       mv-here C2 (id="something else")

We can't use the source of the copy to make things unique either as that
could be copied more than once.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to