May 20, 2024

General usage:
– Checked out files are not locked for exclusive use
– Each directory is a module
– Commands without arguments will affect current directory and subdirectories

Set up the repository source:

export CVSROOT=user@machine:/path/to/repository

Set up ssh:

export CVS_RSH=ssh

Import a new project into the repository:

cvs import -m “log msgprojname vendortag releasetag

Adding a new text file:

cvs add filename

Adding a new binary file:

cvs add -kb filename

Adding a new directory:

cvs add directory

Get module for editing:

cvs checkout/co/get module

Commit changes to file:

cvs commit/com filename

Get/revert file:

cvs update filename

Update everything (don’t create new subdirectories):

cvs update/up

Update everything (and create new subdirectories):

cvs update -d

Compare file to repository:

cvs diff filename

Remove file to repository:

cvs remove/rm -f filename

Review file history:

cvs log filename

Tag all files:

cvs tag -c tag

Display status information on checked out files

cvs status

Commit modifications:

cvs commit

Differences between checkout and update:
– All work on files controlled by CVS starts with a checkout.
– Update is intended to be executed within a working directory created by checkout.
– Checkout creates a directory, moves into it, then becomes equivalent to “update -d”.
– Update does not create directories unless you add the ‘-d’ option.
– Update doesn’t take a module or directory argument, but figures out what repository files to look at by reading the files in the ./CVS administrative directory.
– Checkout is generally run once during the beginning of the project.
– Update is executed routinely to get updated files.

CVS Cheat Sheets:
Robert
Fox
DLPS
Tulrich
Webfunds
DSauder
OMG

Manuals:
The CVS Book

FAQ:
What’s the difference between “update” and “checkout”?
How do you handle binary files?

SourceForge:
Introduction to SourceForge.net Project CVS Services
Phramework

Resources:
CVS Resources