On 17.09.2013 12:55, Julian Foad wrote:

[...]
> Start with
>
>   r10:
>     trunk
>       /A
>       /B
>
> branch the trunk:
>
>   r20:
>     trunk
>       /A
>       /B
>     branch
>       /A (pointer to /trunk/A)
>       /B (pointer to /trunk/B)
>
> modify branch/A:
>
>   r30:
>     trunk
>       /A
>       /B
>     branch
>       /A
>       /B (pointer to /trunk/B)
>
> Now
>  let's say we're diffing branch@20 and branch@30.  I want to be able to 
> report a mapping between each path in branch@20 and the path in r30 
> corresponding to "the same node", where "the same node" is to be defined
>  in some way that makes sense for tracking moves.  In this simple 
> example, there are not even any moves, and so I want the move-tracking 
> code to be able to deduce the following 1:1 path-mapping between 
> branch@20 and branch@20:
>
>   PATH@20        PATH@30
>   branch    <->  branch
>   branch/A  <->  branch/A
>   branch/B  <->  branch/B
>
> It certainly must not report a simple (node-id, copy-id) correspondence, 
> because that would look something like:
>
>   PATH@20        PATH@30
>   branch    <->  branch
>   branch/A  <->  trunk/A  # or (nil) as it's out of tree-scope
>   (nil)     <->  branch/A
>   branch/B  <->  branch/B
> which breaks the mapping between branch/A@20 and branch/A@30.

I'm confused. What are you trying to solve here? Subversion already
knows how to look through copies to find node equivalence. Your example
here has nothing to do with move tracking, and furthermore this problem
is already solved in the current implementation.

-- Brane

-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. br...@wandisco.com

Reply via email to