[squeak-dev] Re: The perfect revision control system

Jason Johnson jason.johnson.081 at gmail.com
Thu Feb 21 20:13:32 UTC 2008


On Feb 16, 2008 10:00 PM, Colin Putney <cputney at wiresong.ca> wrote:
>
> This should be interesting. You're right, MC2 does all this stuff
> (except the first item, obviously). In fact, the design of MC2 came
> out of a discussion that Avi and I had about the darcs theory of
> patches.

Yea, I remembered that from earlier discussions.

> If you look at discussion of versioning system around the net, you'll
> run across bitter arguments about change-sets-vs-snapshots. As far as
> I can tell, the two are information-equivalent. I think it boils down
> to how you prefer to think about the problem.

I agree, they probably are equivalent.  But the issue I see is that we
already record the information of what is changing in the system, so
we have for free what Darcs (the most advance system in this regard)
is simulating with it's cherry picking [1].  It seems a shame to not
use that information.

> That said, I'm glad you've decided to take this on. There maybe some
> real advantages to combining the benefits of code-as-objects, which we
> take for granted in Smalltalk, with a theory of patches. On that leaps
> to mind rather quickly is that you can have a much richer set of
> operations than darcs.

Thanks.  For sure we can.

>Darcs has a token-replacement operation, which
> allows patches to be more easily commuted. But token replacement is
> basically the simplest, crudest refactoring imaginable. If your system
> included operations based on refactorings, you'd gain a lot of power
> over both darcs and MC.

You mean to do the commuting?  I.e. to truly understand how the code
changed, to be able to make the "A-1" type patch more accurate then
Darcs would be able to?

> One word of caution: the word "perfect" in the subject of this mail
> worries me a bit. Versioning is a black art, and perfection is a cruel
> god. Please, don't strive for perfection. Just make something better
> than the alternatives for a particular purpose.

Ah, no worries about that.  I like to know what a perfect world looks
like so I can point my Smalltalk-mobile in that direction.  I don't
expect to ever get there and I certainly wouldn't hold back a release
until I did.  I'm an extremely incremental developer (a big reason I
love this language).  My projects probably look bad at first, before
the code/problem shows me where the synergies are.  I have been doing
heavy "refactoring" long before people started calling it that. :)

> Anyway, I'm looking forward to seeing what you come up with.
>
> Colin

Thanks, so am I. :)

[1]  That is, any non-Smalltalk system is doing snap-shotting in a
sense, as they are "dead" while all changes are happening and when
reinvoked must take a "snapshot" of the current state of the world and
compare it to the last "snapshot" (Note that even Darcs keeps a
"pristine tree" for this purpose).



More information about the Squeak-dev mailing list