monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] Re: Deterministic *-merge


From: Oren Ben-Kiki
Subject: [Monotone-devel] Re: Deterministic *-merge
Date: Fri, 12 Jan 2007 16:53:45 -0800

On Fri, 2007-01-12 at 12:57 -0600, Timothy Brownawell wrote:
> What you're missing is the "minimal" part of the definition of *(node).
> You don't just union the mark sets of the parent nodes, you take that
> union and then run erase_ancestors() on it.

<smack self on head> of course. Its also sort of what I had in mind when
I thought of culling the set. Makes perfect sense. I knew I was missing
something obvious. Sorry.

One last question :-) Is the idea that the '#' nodes be completely
virtual? That is, if I have two actual versions in monotone, one with a
value of 'a' and one with a value of 'b', and I try to merge them...
what would happen in practice?

The simplest way would be to force the user to resolve every '#' to a
specific value (just like he does today when there is a conflict), so in
the monotone repository we would see:

  a*  b*
   \ /
    c*

Only during the merge algorithm the graph would be considered to be:

  a*  b*
   \ /
    #
    |
    c*

So all the '#' nodes would only exist virtually, never in a real
version. If that's the case, then the example of merging two '#' nodes
would be impossible to construct in practice.

The more complex alternative would be to allow '#" values in real
versions. This would allow merging two '#' nodes to cleanly remove the
conflict, but it would also require some way of actually representing
'#" values inside text files.

I assume that what you are proposing is the former (simple) method?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]