sourcecode-management

Julian Fitzell julian at beta4.com
Tue Aug 23 23:17:57 UTC 2005


Victor Rodriguez wrote:
> What about just filing out classes to individual files and checking
> those into SVN?

The major problem with this approach is that you need to add and remove 
files from CVS or SVN when you add or remove classes.  It also doesn't 
handle the case of method overrides on other classes, which Monticello 
handles seamlessly for you (as long as you put the methods in a properly 
named category).  Also, as you point out, filing in all the classes over 
and over even though they haven't changed can be slow in a large project.

> A disclaimer: I just started playing with Smalltalk and Squeak and
> know very little of change sets, and nothing about Monticello.
> 
> To keep my own code in CVS I have been thinking about writing a little
> tool to file out all the classes in the category I'm using for them
> (I'm assuming this is possible). Then I would use my CVS client
> (XEmacs) to check-in the modified files.

The tool you are describing sounds basically like the original 
Monticello, now called MonticelloCVS.  The only real difference being 
that we decided, for various reasons after months of trying different 
approaches, to use one file per package instead of one per class.  We 
also determined an best-possible ordering of code to minimize cvs 
"conflicts" by reducing the amount of code reordering going on when you 
add methods, etc.

The original monticello worked great except that it suffered from the 
same problems that CVS always does: it doesn't have any syntactic 
understanding of the code or the changes, so "conflicts" can begin to 
run rampant because of your merging patterns or because people are 
working in physically-proximate but unrelated locations in the source code.

The new Monticello (and the newer one in development) addresses these 
issues by storing version history and adding an understanding of what a 
method is, what a comment is, what a timestamp is, etc.  It provides 
branching, merging, conflict resolution, multiple repositories, etc. all 
quite simply from within the image.

If you can just use Monticello, I would highly recommend it.  If for 
some reason, you need to use CVS (hey, we've all worked in places like 
this :) ) then I would definitely suggest seeing if you can use or tweak 
MonticelloCVS to your needs rather than reinventing that wheel.

Julian

-- 
   Julian Fitzell  --  Beta4 Productions
julian at beta4.com  --  http://www.beta4.com
Seaside: http://seaside.st/



More information about the Squeak-dev mailing list