On 06.03.2015 12:13, Julian Foad wrote:
> I want to share, briefly, one of the key concepts that is guiding my thinking 
> about move tracking. It's nothing amazing, in fact it may seem so obvious 
> that it hardly needs mentioning. What's more surprising is that we haven't 
> paid more attention to this idea before.
>
> In order to build a sane merging system, we expect certain symmetries in the 
> data model.
>
> Example:
>
>   * start with trunk@9
>     commit patch P onto trunk, making trunk@10
>     branch trunk@9 to B, making B@11
>     merge trunk to B, making B@12
>     then: diff(trunk@10, B@12) should be nil
>
> Bleedin' obvious, heh?
>
> The idea is that these two things should be symmetrical, interchangeable:
>
>   * a change along a branch
>
>   * a difference between two related branches
>
> That generalizes to:
>
>   * uniformity of the difference from branch1@r1 to branch2@r2
>     for any values of: branch1, r1, branch2, r2
>     where branch1 and branch2 are 'related' (formally: in the same branch 
> family)
>
>   * diffs obey some (more or less obvious) arithmetic rules such as:
>     diff(A,B) (+) diff(B,C) == diff(A,C)
>     diff(A,B) (+) diff(B,A) == nil
>     and so on
>
> Not just roughly but precisely, testably so.

http://darcs.net/Theory/GaneshPatchAlgebra

You've heard of darcs, I take it. :)


-- Brane

Reply via email to