stsp_at_apache.org writes:
> Author: stsp
> Date: Sat Nov 19 18:34:52 2011
> New Revision: 1204035
>
> URL: http://svn.apache.org/viewvc?rev=1204035&view=rev
> Log:
> On the moves-scan-log branch, change the way data about server-side moves
> is returned from the log history scanner.
>
> Before this change, a given sequence of moves which happened in
> given revisions, such as:
> rA: mv x->z
> rA: mv a->b
> rB: mv b->c
> rC: mv c->d
> resulted in a map of original source paths to a list of all moves
> of this node:
>
> 'x' : [(rA, x->z)]
> 'a' : [(rA, a->b), (rB, b->c), (rC, c->d)]
>
> This is impractical. During updates the base revision of the working copy
> is arbitrary so we might not know the nodes 'a' and 'x' under these names.
> So, instead, build a map of revision numbers to all moves which happened
> in the given revision, which looks as follows:
>
> rA : [(rA, x->z), (rA, a->b)]
> rB : [(rB, b->c),]
> rC : [(rC, c->d),]
>
> This will later allow an update to find relevant moves based on the base
> revision of a node. Additionally, all moves pertaining to the same node
> are chained into a doubly-linked list via 'next' and 'prev' pointers.
> This way, an update can look up all moves relevant to a node, forwards
> or backwards in history, once it has located a relevant move in the chain.
> This can be visualized as follows:
>
> rA : [(rA, x->z, prev=>NULL, next=>NULL),
> (rA, a->b, prev=>NULL, next=>(rB, b->c))]
> rB : [(rB, b->c), prev=>(rA, a->b), next=>(rC, c->d)]
> rC : [(rC, c->d), prev=>(rB, c->d), next=>NULL,]
>
> The update editor still does not use this information. But it will soon.
That's very useful when trying to understand the code, so why is it in
the log message and not in the code?
--
Philip
Received on 2011-11-21 11:53:12 CET