Hi Rod. Long time no read. Of course, that's because I no longer use
ClearCase. You may remember that I used to work at Instinet where they
used CC a lot.
Well, now I'm at Lazard Freres, one of the last private finanical houses
in NYC. Matthew.Persico(a)lazard.com
Anyway, let's start the call rolling. How do we do that? A spec:
1) Do we want to bolt an API on top of the existing VC package? This may
keep us in sync with RMS.
1a) CAN we bolt an API on top of the exising VC package? This question
best answered by its maintainers.
2) Whether or not we bolt onto existing OR build from scratch, a first
cut at the functionality "newVC" needs to provide is:
o checkout/lock the file associated with the current buffer
o checkin/unlock the same, possibly with a copy back out. This is to
update expanded keywords.
o Comments on both of the above.
o All of the above on marked files in a dired buffer.
Big deal. We all know this.
However, if you look at the systems we are trying to integrate, they
fall into at least 4 categories:
1) Archive-based systems. This is RCS/SCCS.
2) Archive-grouping mechanisms over archive-based systems. CVS/PVCS
(commercial product)
3) Installable file systems. ClearCase
4) Unknowns (at least to me): Perforce, Source Safe
One API for these things can't be too sophisticated; to cover 'em all,
you need a least common denominator. Well it seems to me the simplest
thing to do is simply turn VC into a table-processing extention that
just invokes the appropriate external command where needed.
You need functions to checkout/checkin files. They should simply write
the current file out, prompt for a comment if appropriate, invoke the
appropriate shell command to do the work and C-xv the buffer for
refresh.
You need functions to set the "environment" - that is archive dirs, work
dirs, etc. Usually, this is just setting some envvars. Can lisp, like
Perl, set envvars in some array that is passed onto subprocesses called
from XEmacs (How do you execute shell comands in Lisp anyway?). In some
products (ClearCase) this is not as easy.
You need to be able to apply these to a dired buffer.
Anything else?
Sometimes I get the feeling that VC is just too sophisticated for its
own good.
Flame away. Someone has to try and start pushing this thing up the hill.
--
Matthew O. Persico
Nothing even remotely clever at the moment.