Daniel Shahaf wrote on Tue, Jun 25, 2013 at 21:53:07 +0000:
> On Tue, Jun 25, 2013 at 12:42:55PM +0100, Philip Martin wrote:
> >    R /A (from /X/Y/Z:1)
> >    A /A/B (from /A/B:1)
> >    R /A/B/C (from /X:1)
> >    D /A/B/C/Y
> >    R /X (from /A/B/C:1)
> >    A /X/Y (from /X/Y:1)
> >    R /X/Y/Z (from /A:1)
> >    D /X/Y/Z/B
> > 
> 
> What if we had three trees?
> 
> % svnmucc -mm -U $URL \
> rm A rm M rm X \
> cp HEAD X/Y/Z A cp HEAD A/B/C M cp HEAD M/N/O X \
> cp HEAD A/B A/B cp HEAD M/N M/N cp HEAD X/Y X/Y \
> rm A/B/C rm M/N/O rm X/Y/Z \
> cp HEAD X A/B/C cp HEAD A M/N/O cp HEAD M X/Y/Z \
> ;
> r2 committed by danielsh at 2013-06-25T21:51:29.046012Z
> % svn log qv -r2 $URL
> ------------------------------------------------------------------------
> r2 | danielsh | 2013-06-25 21:51:29 +0000 (Tue, 25 Jun 2013)
> Changed paths:
>    R /A (from /X/Y/Z:1)
>    A /A/B (from /A/B:1)
>    R /A/B/C (from /X:1)
>    R /M (from /A/B/C:1)
>    A /M/N (from /M/N:1)
>    R /M/N/O (from /A:1)
>    R /X (from /M/N/O:1)
>    A /X/Y (from /X/Y:1)
>    R /X/Y/Z (from /M:1)
> ------------------------------------------------------------------------
> 
> How would such a thing be represented?
> 

First sketch:

    move(/A/B, /X/Y/Z/B)
    move(/M/N, /A/B/C/N)
    move(/X/Y, /M/N/O/Y)
    rotate(/A, /M/N/O, /X, /A/B/C, /M, /X/Y/Z)

The final rotate() call looks tricky: it moves something to /M and
something to /M/N/O, so the former move must be handled first
(regardless of which target appears first in the cyclic list of
arguments).

The "temporary node" (/./././.) issue I mentioned in muy previous mail
applies here, too.

As I said on IRC: I'm starting to wonder if removing rotate() from the
API (replacing it by N move() calls) would be the right thing.

> > How would Ev2 describe that?  Perhaps

Reply via email to