[ANN] Monticello Versioning

Avi Bryant avi at beta4.com
Wed Jul 23 19:36:41 UTC 2003


On Wed, 23 Jul 2003, Julian Fitzell wrote:

> Now, the only real case where you would want to use changesets while
> working *within* Monticello (as opposed to sending them outside of the
> system) is a branch picture like the following:
>
>    B-----C-----D
>   /
> A
>   \
>    B'----C'----D'----E'----F'
>
> Now say that we want to get rid of the lower branch because we didn't
> like the direction it went in.  But we actually still want the changes
> made in E'.  In CVS, you would make a diff between D' and E' and apply
> it to D.  But we can actually do this internally (SVN does this) by
> using a 4-way merge algorithm which specifies that we merge the
> differences between D' and E' into D using A as the common ancestor.  So
> I think if we implement a 4-way merge in MC, then there really should be
> no need for changesets when working within the system.

The way Monticello currently does a three-way merge is by combining
two patches - so, for example, if you have

  B
 /
A
 \
  B'

and you want to produce C by merging B and B', you take the patches (B-A)
and (B'-A) and combine them (possibly resolving conflicts in the process)
into the patch (C-A).  You then apply (C-A) to A and get C.

Now, your 4-way case probably isn't as simple as combining the patches
(E'-D') and (D-A), and then applying the resulting patch to A - or is it?
What are the cases where that wouldn't work?  (As you can see, I'm
still being lazy).

Avi



More information about the Squeak-dev mailing list