Julian Foad wrote on Thu, Jun 27, 2013 at 18:42:18 +0100:
> For the record, to make it easier to understand our current position in retrospect, I'll try to summarize our findings about the 'rotate' operation so far.
>
> We started with a requirement:
>
> * Represent with 'true moves' any combination of moves that can already be represented using the copy-and-delete model in Ev1.
>
> We assumed some constraints:
> * A sequential model with operations including 'move' and 'rotate'.
> * Don't touch a path more than once.
> * Don't use temporary names/paths.
>
> We found:
>
> * Examples with no solution that fits the constraints.
>
> But:
>
> * We did not define 'rotate'.
> * We did not define 'touch'.
> * We did not define 'path' in the context of 'touch a path'.
> * We have only hinted at the rationale for these constraints.
> What
> if (B) has a child named "B" already? Two possible options are the
> rotation is not allowed or the child gets deleted and replaced. These
> options both impose an additional ordering constraint: if we want to
> keep that node and move it to somewhere else, we have to do it *before*
> this rotation. But there are cases where we cannot do that. Perhaps
> the simplest is swapping 'A' with 'A/B' while keeping 'A/B/B' in place:
>
I didn't understand your diagrams, but I went ahead and added this
example to the Ev2 wiki page so we don't forget it:
https://wiki.apache.org/subversion/Ev2#The_constant_grandchild:_.60swap.28A.2C_A.2FB.29.60_without_moving_A.2FB.2FB
You might want to do the same with the questions you asked above, for
the same reason.
Cheers,
Daniel
> "A" | -- -> "A" |
> (A) \/ (B)
> "B" | /\ "B" |
> (B) -- -> (A)
> "B" | "B" |
> (B2) -----> (B2)
>
> Note
> that node (B2) needs to be 'moved' although it remains at the same
> absolute path, because our definition of 'move' says that it would
> otherwise go with its parent. In this case, we cannot move A/B/B before
> the rotate because it would need to go to A/B which is already
> occupied. If we try to do it after the rotate, we find it has already
> been deleted and replaced, as explained in the previous paragraph.
>
> Thus the model does not satify the constraints.
Received on 2013-07-01 14:33:36 CEST