[ANN] Monticello Versioning
Julian Fitzell
julian at beta4.com
Wed Jul 23 18:57:18 UTC 2003
Avi Bryant wrote:
> On Wed, 23 Jul 2003, Julian Fitzell wrote:
>
>
>>I don't think MC needs a custom patch format. Changesets are perfect
>>non-declarative patch files already. It would be nice to include the
>>version they were made against (or between) in a comment at the
>>beginning or something, just so you can go back and look at it if you
>>like. But I don't think it's actually of much use to MC because the
>>file format is non-declaritive, so it won't be able to look for
>>conflicts, etc. anyway.
>
>
> Well, MC already has Patch objects that it uses internally. What I was
> picturing was a subclass of Version that stored a Patch instead of a
> complete Snapshot. As long as you had the base version accessible, you
> could treat this just like any other Version - when you sent it #snapshot
> it would just pull in the base version and apply the patch, then hand you
> back the reconstructed Snapshot. It's a space/bandwidth optimization,
> which is the main reason people use patches, and I think is what Daniel
> was asking for.
Erm... why does it need to be a version? And again, I think the
changeset is useful when you get *outside* the system, not when you're
inside it.
> You convered the second reason people use patches, and I think you're
> right that it should be handled through merging. I haven't tried to work
> through your four-way merge example yet but I don't see why we couldn't
> hack support for that in... (lazy question: can a four-way merge be
> modelled as three two-way merges?)
I assume you mean 2 three-way merges? a 2-way merge is just a
replacement :)
Hmm... I'm drawing it out and I think, at least in the simple case, you
can do it as a single three-way merge by reparenting one of the versions
so it looks like a three-way. But what I can't quite remember is
exactly what cases that breaks down in and I don't have time to stare at
it anymore.
My memory is that the 4-way merge involves a process of rewriting
changes in a patch to avoid conflicts based on the 4th node. But it
may be that the combination of not having an order-based version format
(ie. text file) and storing history of a version resolves the issue
satisfactorily. One of us will have to dig out the 4-way merge paper
again (though at the moment I can't even find it on google... sigh)
Julian
More information about the Squeak-dev
mailing list
|