CMU Common Lisp developer resources

This page is intended for active developers of CMUCL, those who will modify wthe working sources.

Our public resources (they include delay-free access to the current working sources of CMUCL) are listed at http://www.cons.org/cmucl/.

Basic places

The machine that holds the CVS tree is named cvs2.cons.org.

The CVS tree for CMUCL is cvs2.cons.org:/home/CVS-cmucl

You can use the ftp space on this machine to put up project-related files. Directory /a/ftp/lisp is writeable by the whole group and reflects to http://www2.cons.org:8000/ftp-area. It is mirrored (daily or so) to ftp://ftp2.cons.org/pub/languages/lisp/cmucl/.

http://www2.cons.org:8000/CVS-cmucl/ access the CVS repository directly (individual files).

http://www2.cons.org:8000/ftp-area/cmucl/ is our ftp stuff, accessed without mirror delay.

http://www2.cons.org:8000/ftp-area/cmucl/cmucl-cvs-<date>.tar.gz is a tarfile of the contents of the CVS tree (daily).

http://www2.cons.org:8000/ftp-area/cmucl/cmucl-src-<date>.tar.gz is a tarfile of outchecked sources files from the CVS tree (daily).

http://www2.cons.org:8000/ftp-area/cmucl/src/ are the outchecked sources from the CVS tree, as individual files.

http://www2.cons.org:8000/cgi-bin/cvsweb-cmucl.cgi is an interacting browsing tools for CVS files. You can step trough the source tree interactivly and see histories and diffs between versions.

CMU Common Lisp CVS tree usage

Thanks to Jordan Hubbard of the FreeBSD project and Walnut Creek CDROM we have machine to use for our central CVS repository.

The CVS tree for CMUCL is located at

cvs2.cons.org:/home/CVS-cmucl
and the main source tree is
cvs2.cons.org:/home/CVS-cmucl/src

There are several alternatives to use it. Basically, you need an account on this machine and then check out files by setting the environment variable $CVSROOT to "cvs2.cons.org:/home/CVS-cmucl" when using from remote or to "/home/CVS-cmucl" for local checkout. Then, do a "cvs checkout src".

There are a number of alternatives to work with the tree, here are some:

We are guests on this machine and several security restrictions apply. If you can, avoid using login protocols that transfer clear text passwords. Using ssh instead is the best choice.

Normally, remote CVS uses a protocol that is based on top of rsh and .rhosts. This isn't available here. I'm sorry to add some work here, but to use remote CVS, it is best to get ssh in addition to CVS. Set the environment variable CVS_RSH to "ssh".

There is also a standalone CVS server mode (which transfers clear text passwords) and Kerberos authentication (I'm unsure about possible usage on this machine). I hope we can agree of ssh for "real" remote CVS checkout. Transferring plains files to your machines is another issue, let me know what you need.

Locking, Updates, Synchronisation and such

If you're used to RCS and not to CVS, be warned that CVS does no locking. It tries to merge concurrent changes and is usually quite successful in doing so. But it is a good idea to "cvs update" your checked-out sources regularly. It tells about the files that someone else changed and are updated in your copy.

But, be carefule with "cvs update" when you transferred the outchecked files to your home machine manually. CVS remembers which version number your outchecked source has. An example:

When you commit at this point, you will revert the changes someone else did between 1.14 and 1.15, because CVS thinks the file you edited was up-to-date, contained these changes and you removed the previous changes by purpose. If you didn't made a "cvs update" in between, CVS would know it should first tell you about the 1.15 changes and merge these into your working file, so everything is fine.

In a word, do a "cvs update" only when you can update all the files you're really working on. "cvs update" tells you which files were changed by someone else.

Transferring the whole CVS tree to your home

I found the best method to keep a local mirror of a CVS repository is using rsync over ssh. rsync transferrs only changes bits and uses ssh in compression mode. It is very efficient.

If you can't have a ssh connection

When you do a checkout to get plain files to work with, CVS remembers where the CVS repository was. If this is your local one, changed things will be commit to your local tree and won't end up in the central one.

You'll either have to transfer your changed files manually to a checkout-out tree that was checked out from the central CVS tree (i.e. in your homedir on the cvs machine).

Another situation is when you have an IP connection to the central repository that is capable of remote CVS, but you maintain a local copy for speed.

You can change the files where CVS remembers what repository it got things from. This is a file "CVS/repository" in every subdirctory of your checked-out files. jordans-hacks-for-remote-cvs.txt is a message of Jordan Hubbard how he commits to a local and the central repository at once. Note while people talked about CVSup in this message, this way doesn't have anything to do with CVSup.

Other things to point out:

Backups

The machine is backup up regulary by the site it belongs to, but I have no prove or control. I mirror the src/ subdir to another machine under my control using a cronjob.

Some of you might want to keep a copy of the whole CVS repository at home also. If you do so, please drop me a note.

Links:


Martin Cracauer <cracauer @ cons.org>
©2007 Martin Cracauer $Id: cmucl-cvs.html4m,v 1.8 1998/05/25 11:55:50 cracauer Exp $