On Friday 02 September 2005 21:48, Bram Cohen wrote:
> First of all though, there's a point I have to get out of the way.
> Just how does one pronounce 'precise-*-merge'? Star-merge is already
> taken as a term, and asterisk-merge just doesn't roll off the tongue
> in quite the same way.

Precis(e)tar-r-merge? :-)

> This approach is entirely based on values, not graph node

There's a subtlety involved:

    a1
   / \
  d1  b1
   \ / \
    b?  c1   

b? would have been a conflict, resolved in favor of b. So the rule is:

"In case of a conflict resolved for one of the values, you keep the 
winner's generational number."

On the other hand,

      a1
     /  \
    b1   a1
     \  /
      a2?

Here there would have been a clean merge to b1, overridden for a, so the 
rule is: 

"In case a clean merge is overridden for the losing value, you increment 
the generation number."

It sounds like a potential divergence between the programmer's intent 
and the algorithm's interpretation. It does seem to work however... Any 
rationale?

Then there's implicit undo :-) The whole approach philosophically 
opposes implicit undo, since the "undone" generation number _must_ be 
higher than the original, causing conflicts. I really don't see how you 
could even approach trying to make implicit undo work...

Have fun,

        Oren Ben-Kiki


_______________________________________________
Monotone-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/monotone-devel

Reply via email to