SCAN-CVS bridge

Göran Hultgren gohu at rocketmail.com
Thu Sep 20 07:39:23 UTC 2001


Hi!

--- danielv at netvision.net.il wrote:
> Hi guys.
> 
> Bob Hartwig raised the question of where to put the RB port for Squeak -
> as Ralph Johnson proposed, putting projects on SourceForge (basically, a
> hosted CVS with web front end) would raise Smalltalks visibility. In

Well, SF has A LOT more functionality than that actually... :-)

> this case, Squeak's too. This is good.

Yep.

> OTOH, I like having the project in a Squeak based repository. SCAN is
> very nice, and being Squeak, we can make it better.

Yep.

> I was thinking maybe we can have SCAN use the work being done on the CVS
> protocols to update a SourceForge site as a mirror.
> 
> Does someone know CVS enough to see why this is a really stupid idea, or
> very simple to do?

(I guess that Martin Kobetic knows most when it comes to the trickiness of using Smalltalk with
CVS and I know most when it comes to the socket protocol.)

Well, regarding the stupidity - I don't really know. :-) It depends on what you want to achieve!

There are two different ways of using CVS today from Squeak, either you mirror stuff out into your
local filesystem and then run the original cvs to actually change stuff in the server repository -
this is how the CVST tool does it today.

The main problem in such a setup is to implement the mirroring-mechanism, which sounds simple but
the issue is to represent the Smalltalk code in such a way that you preserve the "locality" of
changes in the files and that the code "feels" like classic source files.

The CVST project with Martin Kobetic has solved most of those problems as far as I know (an
example of a problem would be to ensure that methods are always filedout in the same order etc.)
and they are maintaining the source of the project itself using itself (funky sentence there) on
http://cvstproj.sourceforge.net. I also believe that GLORP used CVST, at least for a while, don't
know their current status.

What I have focused on is to implement the CVS socket protocol in Squeak. Current status is that
it works but there are a few silly little functions missing, but actually probably just a couple
of hours work. Using that together with the rest of CVST you could get rid of the external cvs
client and do everything from within Squeak. You could also use CVS as a versioning backend for
whatever data you would like, not just sourcecode.

Ok. So a question back to you, what do you want to achieve? :-) The reason I ask is that even if
there could be value in just putting stuff accessable in CVS, if that is ALL you want CVS to be (a
tricky ftp server) then perhaps it will create more problems than it solves. People will believe
that since stuff is in CVS you can do things with it that CVS can do and they might get
dissapointed when they realize that you just can't.

What things am I talking about? Well, these are just a few problems that I come to think of:

- CVS automatically generates revision numbers, you can't change them. There is a system behind
the numbering scheme.
- CVS has tags, symbolic names on specific revisions.
- CVS has branches.
- CVS has textual merging capabilities with autodetection of conflicts. (not foolproof but works
remarkably well)

These are some of the most important stuff in CVS that you use every day. So... how would you map
onto these? I assume that SCAN has it's own revision numberscheme. Tags and branches is probably
tricky to incorporate with SCAN, or perhaps not, I don't know. And the automerging/autodetection
stuff might be useless too.

In short, what is left that makes CVS more than a simple ftp server? Well, if we are talking about
large masses of source then CVS still has compression and a nice differential protocol which
minimizes network traffic (both those pieces just waiting to be implemented in my implementation
of course...), but more? I don't know...
 
> If anyone wants to work on this, I'll start working on getting the code
> under one license approved by all contributors (a SourceForge
> requirement, apparently).
My code is available as a download on SF, release 0.3, but not in CVS yet. I haven't gotten around
to that since nobody has started to contribute to it yet. If you want to hack on it, just mail me
and I will direct you into the dungeon. :-) As I wrote in my last release note - now is the time
to join because you can add very few lines of code and suddenly it would be useful! Come on,
become a hero! :-) (Missing crucial pieces are actually quite silly - to implement the remove and
add command. One hour work tops I think.)

When I come to think of it, I haven't selected a license yet, hmmm. I just tried to find the
license on CVST, but didn't find it (sorry, there has been a while), I believe Martin chose LGPL,
but I am not sure. LGPL or some form of BSD license is fine by me. SqueakL is perhaps also ok, but
I don't really like it (it is actually not deemed "Debian free" due to the export clauses I
believe).
regards, Göran

=====
Göran Hultgren, goran.hultgren at bluefish.se
GSM: +46 70 3933950, http://www.bluefish.se
"Department of Redundancy department." -- ThinkGeek

__________________________________________________
Terrorist Attacks on U.S. - How can you help?
Donate cash, emergency relief information
http://dailynews.yahoo.com/fc/US/Emergency_Information/




More information about the Squeak-dev mailing list