Table of Contents

Brief Intro to CVS

Checking out code

To check out a module:

cvs -d REPOSITORY checkout MODULENAME

REPOSITORY is the path to the CVS Repository (at BIAC this is CVSRepo under the Source share). MODULENAME is the name of the module that you want to check out. This will create a new working directory MODULENAME that has the latest revisions of all files checked in for this module.

Updating your working directory

To update your working directory with the latest revisions, change to that directory and run:

cvs update -d -P

The -d option will create new directories that have been added since the last time you updated, and -P will “prune” directories that have been deleted or emptied.

Adding a file to a module

To add a file to the repository, make sure it is in a working directory that you checked out of CVS, and do:

cvs add -m "MESSAGE" FILENAME

You may wish to add CVS revision/name fields to your file. You can do this by putting $Id$ anywhere in a comment. You can look at nearly any file in the BIAC MATLAB tools or the “xmlheader” module for examples of that. You can also put $Log$ in a comment and any messages you provide when committing changes will appear there too magically. Generally this is good to have at the end of the file.

Committing changes

To commit changes you make to files in your working directory:

cvs commit -m "MESSAGE" FILENAME

If someone else made changes to that same file, it might ask you to update first. The update may “merge” updates into your copy and if there are conflicting changes, it will tell you that and the file will contain blocks where the old and new code is. You'll need to merge the conflicts manually.

FILENAME in all cases can be a directory, and can be eliminated in the commit case if you just want to commit everything that has changed in the current directory.

Tagging

At some point, if you are going to release or deploy a version of your code, it's a good idea to “tag” it with a release name or number so you can check it out by name later if needed. If you have everything with the right versions in your working directory:

cvs tag RELEASENAME

While revision numbers are specific to each file, tags can be applied to the whole project.

Specifying revisions

You can restrict yourself or affect only particular revisions with the -r option, like:

cvs update -r 1.56 FILENAME

will grab revision 1.56 of the file. “HEAD” is a special revision always indicating the latest revision on the trunk.

cvs update -r RELEASENAME

will grab the revisions of everything in the current directory corresponding to the tag RELEASENAME.

Note that if you specify -r, that revision or tag name will become “sticky” and so further updates or diffs will always stop at the revision or tag specified by the -r option. Sometimes this is not what you want. To reset to the default HEAD revision, use the -A option:

cvs update -A

Showing differences

Another useful command is:

cvs diff

which will show you the differences between the current working directory and the

More info

CVS tutorials on the web are better than the CVS man page, which is only good for reference.