monotone-devel
[Top][All Lists]
Advanced

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

[Monotone-devel] Re: Deterministic *-merge


From: Timothy Brownawell
Subject: [Monotone-devel] Re: Deterministic *-merge
Date: Fri, 12 Jan 2007 12:35:51 -0600

On Fri, 2007-01-12 at 10:04 -0800, Justin Patrin wrote:
> On 1/12/07, Justin Patrin <address@hidden> wrote:
> > On 1/12/07, Nathaniel J. Smith <address@hidden> wrote:
> > [snip]
> > > Example 2 (super bonus edition)
> > > ===============================
> > >
> > > A more wacky example is:
> > >
> > >       a
> > >      / \
> > >     b*  b*
> > >    / \ / \
> > >   c*  b   c*
> > >
> > > Here we have two people who independently set the value to b, which
> > > then makes an accidental clean merge.  Then two other people come
> > > along and independently overwrite the b's with c's.  Because *-merge
> > > makes the decision to be conservative about implicit convergence, if
> > > either of the c's is merged with the b, it generates a conflict --
> > > because someone made a decision to create the b in two different
> > > contexts, but the c came from someone overruling that decision in only
> > > one context:
> > >
> >
> > Forgive my possible ignorance, but if 2 people independently make the
> > same changes to a revision and commit/push them on their own doesn't
> > this end up being the same node in the graph? The way I understand it
> > if 2 people make the same change simultaneously in 2 different
> > databases then sync with each other that the only actual thing being
> > synced would be an author cert on the revision, leaving you with 1
> > revision, not 2. Or am I misunderstanding the "two people
> > independently set the value to b" remark above?
> >
> > According to my understanding this graph would just be:
> >
> > a
> > |
> > b
> > |
> > c
> >
> > since no merging of the 2 independent creations of b is necessary.
> >
> 
> I've just realized that what I'm saying here is monotone specific and
> that perhaps other revctrl systems which do not behave as monotone
> does would make these separate revisions, thus making this example
> useful. Let me know if I'm on the right track.

Yes.

Additionally, nothing says that this is the *only* change in those
revisions. What *-merge covers is merging a single scalar, while what's
being versioned will generally be a collection of several scalars (and
whatever you use to represent text). So this graph is even possible in
monotone, because you can have other changes that make those revisions
different but which don't involve this particular scalar.

-- 
Timothy

Free (experimental) public monotone hosting: http://mtn-host.prjek.net





reply via email to

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