The perfect revision control system

Colin Putney cputney at wiresong.ca
Sat Feb 16 21:00:08 UTC 2008


A highly abridged version of what Jason wrote:

> The features of the system I'm planning will be:
>
> *) Based on change sets
> *) "Cherry picking" of changes.
> *) Labeling.
> *) Fully distributed.
> *) Multiple ways of managing changes.
> *) Compatible with other systems.
>
> Well, that's the list off the top of my head.  I know MC2, and even
> MC1 can do much of this (or probably all in the case of MC2), but MC1
> is based on snapshotting which I disagree with and I think MC2 tries
> to do too much.  I believe the "theory of patches" underlying darcs
> that any system is simply the sum of applying all it's patches, and
> therefor I don't think anything more then this is needed.

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. We concluded that we didn't actually need patch theory in  
Smalltalk, because code is objects rather than text. We figured we  
could achieve all the nice features of darcs just by attaching  
revision history to methods rather than packages.

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.

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

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.

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

Colin



More information about the Squeak-dev mailing list