On Sat, Nov 5, 2011 at 7:21 PM, Greg Stein <gstein_at_gmail.com> wrote:
> Julian raised a question when I saw him in September: how does Ev2
> deal with a node swap? ie. swap the contents of A and B, retaining
> metadata that they were moves [rather than copies from history].
> In Ev2, we attempt to disallow "mv A B ; mv B C". The semantics around
> the interface say you should just do "mv A C".
> But to accomplish an A/B swap, you must "mv A temp; mv B A; mv temp
> B". Thus, A -> temp -> B, which is nominally disallowed in the Ev2
> Question: how to resolve this, given that we're starting to record
> *move* information? (the current interface could do: mv(replacing) A
> B; copy B_at_REV A)
> I've been thinking about a "multiple move" API to describe these kinds
> of changes. It isn't just a simple swap, since you could rotate
> content through an arbitrary set of N nodes. Suppose we had an
> interface that specified N nodes, and node[i] is moved to node[i+1],
> with the last one moving to node. Would this be sufficient? I
> suspect that any moves *outside* of this ring uses the standard
> interface -- it is not participating in the rotation. Hrm. Maybe the
> API is named "rotate" rather than multiple move. (I say rotate because
> I'm envisioning the larger case where you have (say) 5 nodes, and each
> piece of content rotating to the next; looks like a clock or musical
> I'm not a master of topography or graphs, but I suspect that any given
> permutation of N nodes can be reduced to a set of rotations of subsets
> of those N nodes. Thus, a general "rotate" API should be sufficient.
> ps. there is a corollary, unstated question of whether these kinds of
> rotations/multiple-move can be recorded in our WC schema.
I'll do some thinking on this topic, but if you've got some time next week
during ApacheCon, it might be useful to have a sit down and hash some of
-Hyrum "down to 1154 test failures" Wright
uberSVN: Apache Subversion Made Easy
Received on 2011-11-06 01:54:27 CET