[Seaside] monticello remote repositories
Stephen Pair
seaside@lists.squeakfoundation.org
Mon, 30 Dec 2002 09:30:15 -0500
For the ObjectStudio team edition, I implemented a 3-way merge tool, and
I can say from experience that having such a tool is quite nice. A
3-way merge in Smalltalk isn't quite as critical as in other file based
languages, but it is useful.
In the example that Julian gives below, a three way tool takes the guess
work out of the merge. Also, showing the diffs between a version and a
base version is much more meaningful than showing the diffs between to
diverging versions because it shows the exact changes that were made by
a developer; which makes it much easier to see what those changes as
whole were intended to accomplish.
- Stephen
> -----Original Message-----
> From: seaside-admin@lists.squeakfoundation.org
> [mailto:seaside-admin@lists.squeakfoundation.org] On Behalf
> Of Julian Fitzell
> Sent: Sunday, December 29, 2002 9:40 PM
> To: seaside@lists.squeakfoundation.org
> Subject: Re: [Seaside] monticello remote repositories
>
>
> Andreas,
>
> I agree that 3-way merging is probably less useful in Squeak than in
> other languages since methods do often end up being very
> short. I'm not
> convinced though, that you couldn't to 3-way merge at a finer
> granularity than line-by-line. I think by analyzing the
> parsed method
> you ought to be able to tell, for example that if you had:
>
> foo
> ^ self bar
>
> And the two modified versions:
>
> foo
> ^ self bar asString
>
> and
>
> foo
> ^ someBool ifTrue: [self bar] ifFalse: [self baz]
>
> You might well be able to merge both of these changes into:
>
> foo
> ^ someBool ifTrue: [self bar asString] ifFalse: [self baz]
>
>
> I haven't given this too much thought, nor have I even looked in much
> detail at the parsed structure of the method, so I way well be
> completely wrong. But it's still an interesting idea! :)
>
> But I certainly concede that having automated 3-way merge is
> by no means
> a necessity and probably of less need in Squeak code than in
> C code for
> example.
>
> I still don't quite see how a diff between my modified
> version and the
> version on the server is helpful, though. It seems to me
> that that diff
> would contain both the changes made between the two
> repository versions
> and the *reverse* (ie removal) of the changes made in your local copy.
>
> This is where I was wondering if I was misunderstanding you or if I'm
> just not seeing the benefit. I certianly think that long before
> automated merging is done, being able to see all 3 versions and their
> respective diffs would be useful.
>
> Julian
>
> Andreas Raab wrote:
> > Julian,
> >
> > I think that three way merging/diffing is probably overrated in the
> > praxis of Squeak (or any other Smalltalk) coding. Three way
> > merges/diffs are mostly needed if the granularity of the
> code you are
> > looking at is very large (e.g., at the file level or at very long
> > method level). For most portions of code I have ever looked at in
> > Squeak (and believe me it's been lots ;-) I have hardly ever needed
> > the three-way comparison. Mostly because if you see a diff against
> > *your* code (e.g., code that you have modified) and use the source
> > code manager in a reasonable way (by which I mean to update
> every now
> > and then and not every other year) you can usually remember
> what the
> > point of a particular change was and see if that update
> addresses the
> > problem or obsoletes it or relates to it at all. From my personal
> > experiences that's mostly what you need.
> >
> > Most cases I remember where I wanted three way diffs were
> exactly what
> > I described above - either "large methods" (like Interpreter
> > class>>initializePrimitiveTable) or places where I wanted to compare
> > changes on a "file level" (e.g., seeing all the changes
> being done in
> > a particular class). Yet, I would still argue that these
> fall into the
> > 5% category ;-)
> >
> > So I'm not claiming that you never need a three way
> merge/comparison.
> > But I think you could cover lots and lots of grounds by just using
> > what's already there.
> >
> > Cheers,
> > - Andreas
>
>
>
> --
> julian@beta4.com
> Beta4 Productions (http://www.beta4.com)
>
> _______________________________________________
> Seaside mailing list
> Seaside@lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/seaside
>