[squeak-dev] Subversion (was: Re: Perl is to CPAN as Squeak is to (what)?)

Stephen Pair stephen at pairhome.net
Mon Jun 30 20:05:02 UTC 2008


On Mon, Jun 30, 2008 at 1:53 PM, Avi Bryant <avi at dabbledb.com> wrote:

> On Mon, Jun 30, 2008 at 7:57 AM, Colin Putney <cputney at wiresong.ca> wrote:
>
> > The other big problem is that tens of thousands of tiny files is a
> horribly
> > inefficient way to store source code. Yes, disk is cheap. But disk IO is
> > not. I discovered this early in the development of MC2, when I
> implemented a
> > type of repository that stored each method in a separate file. Loading
> > OmniBrowser from that repository involved opening, reading, and closing
> over
> > 600 files, and was very slow. I don't remember the exact timing, but I
> think
> > it was like 5 to 10 minutes, and in any case it was far too slow. Avi
> wrote
> > a repository that stored every thing in a single indexed file, and now
> load
> > time is dominated by compilation.
>
> It's worth pointing out that file-based version control has advanced
> significantly since we did this work - CVS and SVN are now far from
> the state of the art.  I haven't used git much, for example, but it
> seems to be a well layered system, and it may be that we can build an
> alternative front end to its database which is image-based rather than
> working directory based.  For example, imagine comparing an image
> directly to this index file rather than to a directory full of files
> on disk:
>
> http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#the-index
>
> And look at this description of the workflow:
>
>
> http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#the-workflow
>
> I personally believe that we're better off with Smalltalk-specific
> version control, but if someone *is* looking at integration with more
> mainstream tools, I would strongly suggest they start with git rather
> than SVN.
>
> Avi
>

I've been using git quite a bit lately and really like its approach (though
I've heard good things about Hg too).  I liked it so much that I did a
Smalltalk version of it a while back.  The idea was to do basically what git
does, but make it general purpose such that it could be used for managing
versions of any object for which you could define the serialization.  I
started out making it do version control for contacts and later hooked it up
to store Monticello packages (and built a new merge tool in the process).
I've had it mostly done for several months but have resisted mentioning it,
because once you mention something, you're on the hook to get it out.  I'll
see if I can clean it up enough in the next few days and publish it.  I had
hoped to record a screencast to show both how to use it and how the code is
currently organized...probably won't do that, but I'll try to get the code
out soon.

- Stephen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20080630/96c4fc4c/attachment.htm


More information about the Squeak-dev mailing list