environment

The webservices software repository lives on babbler.web.itd.umich.edu in /usr/local/CVSROOT-websvcs. Add this to your .cshrc file:

if ( `hostname` == "babbler.web.itd.umich.edu" ) then
    # the repository is on the local machine
    setenv CVSROOT /usr/local/CVSROOT-websvcs
else
    # the repository is available via ssh
    setenv CVS_RSH ssh
    setenv CVSROOT :ext:babbler.web.itd.umich.edu:/usr/local/CVSROOT-websvcs
endif

adding a new module/project to the repository

step 1: cd into the root of the module's working directory.
step 2: cvs import -m "log message" name name start
step 3: cvs diff name

if the diff succeeds then you can cd back a directory level and blow away the working directory. You don't have to, of course, but you can. :-)

checking out the current version of a module to work on

step 1: cd into a build directory or similar working space
step 2: cvs checkout -P name

then make changes as you need to, don't delete directories! (see the man page for cvs remove to find out how to remove files). Directories never get deleted from the repository. The '-P' flag above will prune empty directories from your checked-out source tree.

exporting a project

This is actually how moves to production are going to work. The developer will have to use CVS to maintain her/his project. When it is time to move to production they'll send us a message that includes the following information:

intended URL of project:
CVS project name: (i.e. showcase, umce, counter, etc...)
version to publish: meaningful tag
The author must have set a meaningful tag with the command:

cvs -q tag production-2000_11_11

("production-2000_11_11" is just an example good tag.)

anyway... the actual command we'll use for this is:

cvs export -r meaningful_tag name

The export is really nice because it doesn't include any empty directories or CVS version information so it should be ready to go live.

reference

man cvs is your friend.
http://www.cvshome.org/ has some good docs.

backups

babbler is backed up (both the development DB and /usr/local/).