Branko Čibej wrote on Wed, Jun 26, 2013 at 13:33:00 +0200: > On 26.06.2013 11:46, Daniel Shahaf wrote: > > Greg Stein wrote on Wed, Jun 26, 2013 at 05:30:10 -0400: > >> On Wed, Jun 26, 2013 at 5:25 AM, Daniel Shahaf <[email protected]> wrote: > >>> Philip Martin wrote on Wed, Jun 26, 2013 at 09:30:42 +0100: > >>>> Greg Stein <[email protected]> writes: > >>>> > >>>>> You're affecting six nodes, so I think you should be able to pack this > >>>>> down into touching 6 nodes once each. I believe this will work: > >>>>> > >>>>> move(A/B, X/Y/Z/B) > >>>>> rotate(A, X/Y/Z) > >>>>> move(X/Y, A/B/C/Y) > >>>>> rotate(X, A/B/C) > >>>> Yes, I think that works. > >>> This effectively uses temporary nodes (X/Y/Z/B and A/B/C/Y). I thought > >>> one of the goals of Ev2 design was to not need such nodes. (This also > >>> ties to my thread about what state the SRC argument of move() should be > >>> relative to.) > >> Only in Pedantic Bizarro Land. > >> > >> Come on, Daniel. There are no manufactured nodes. Those two are the > >> final nodes, after a bit of parent rearrangement. > >> > >> We are not making up A2 or X2, as in Philip's original email. The > >> commit process is not creating nodes that exist only during the txn. > >> All nodes survive the txn. > > X2 was a temporary name. A/B/C/Y is a temporary name. Neither the name > > X2 nor the name A/B/C/Y survives the txn. > > You're confusing names with nodes. Don't.
I don't think I am. The name A/B/C/Y does not exist either in the initial tree state (before the edit starts), nor in the final tree state (after the edit ends). It only refers to a node at some points while the edit is underway. Yes, the node Y exists all along --- it was called X/Y in the initial state and will be called X/Y in the final state. It's just that if your reference point is either the initial or final state, you the name A/B/C/Y does not refer to that node. > Names are merely incidentally a (transient) identifier for nodes. In > Greg's solution, no new nodes are created -- they /can't/ be because > neither move() nor rotate() can create or delete nodes. > Agreed with all that. (In fact, I deleted similar sentences from a draft of my reply to Greg.) Daniel > -- Brane > > > -- > Branko Čibej | Director of Subversion > WANdisco // Non-Stop Data > e. [email protected]

