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
Received on 2013-06-26 11:33:34 CEST