darcs (was Re: [BUG] Integer hex is missing in 7006?)
Avi Bryant
avi.bryant at gmail.com
Sat Mar 11 21:59:52 UTC 2006
On Mar 11, 2006, at 1:41 PM, Tom Rushworth wrote:
>
> I've looked at the darcs source, and gone to the extent of learning
> to read
> Haskell in order to figure it out. Re-implementing darcs in Squeak
> would be
> be a big job. Not just because Haskell has a very concise syntax
> (which would
> probably lead to considerable code expansion), but also because
> darcs is a big
> program. The automatic merger at the heart of darcs is just not a
> simple thing
> to do.
I looked into darcs fairly deeply when Colin and I were designing
Monticello 2. Most of the complexity (and almost all of the need for
the "theory of patches") comes from:
a) Darcs is versioning arbitrary text files, which don't have obvious
semantic units, and thus
b) for any version of a given semantic unit in the code base, there's
no way to know exactly which previous versions it was derived from
The fancy stuff in Darcs is really just a way of reverse engineering
that information. In Smalltalk, since we know the semantic units
(classes/methods), we can record precise ancestry information for
them directly, and have a *much* simpler merge algorithm that is just
as effective.
To put it another way, using the Darcs automatic merge algorithms on
file-outs of Smalltalk code is like dubbing your CDs to audio
cassette and then running them through a *really good* noise filter
to get rid of the tape hiss.
It's unfortunate that Monticello 2 has languished in the designed-and-
half-implemented phase for so long (about 2 years now I think),
because I do think it's a good model. It seems to be a case of
"eating your children" - Monticello as it stands now is just barely
good enough that there hasn't been a compelling enough itch to force
us to finish v2. But feel free to encourage us in whatever way seems
appropriate :)
Avi
More information about the Squeak-dev
mailing list
|