[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
|