CVS commands that I always forget. We may move to Subversion at some point but most clients still have CVS.
cvs -d :pserver:user@cvs.example.net:/cvsroot login cvs -d :pserver:user@cvs.example.net:/cvsroot checkout project cvs update -dP # -d new dirs, -P prune empty cvs status -v file.c # tags and sticky info cvs diff -u -r 1.4 -r 1.6 file.c cvs log file.c cvs tag REL_1_2 cvs rtag -b BRANCH_1_2 project cvs update -r BRANCH_1_2 cvs update -A # back to trunk, clears sticky tags cvs add file.c ; cvs commit -m "add file" cvs remove -f file.c ; cvs commit -m "remove"
Binary files: cvs add -kb file.gif, or set in cvswrappers. Otherwise keyword expansion eats your images.
Conflicts: look for <<<<<<< in the file, fix, then commit. CVS does not check the conflict was resolved.
Sticky tags after a checkout with -r are the number one source of "my commit went nowhere" questions.
Update 2006: we moved two projects to Subversion. See SubversionNotes? (does not exist yet, someone write it). -- mh