http://compbio.soe.ucsc.edu/cvsdoc/cvs-primmer.html
http://www.bioinf.uni-freiburg.de/~mmann/HowTo/cvs_branches.html
${b} is the branch name, and ${m} is the module name
To create a branch:
1. Tag the set of sources you want to branch with a command like:
cvs rtag -r HEAD ${b}-base ${m}
2. Branch them with the command:
cvs rtag -b -r ${b}-base ${b} ${m}
To update the branch to reflect changes in the trunk:
1. Update your working source tree to be on the branch:
cvs update -P -r ${b}
2. Make a tag which represents the new base you're moving to:
cvs rtag -F -r HEAD ${b}-nbase ${m}
3. Merge changes between the old and new base of your branch:
cvs update -j ${b}-base -j ${b}-nbase
4. Merge conflicts, etc.
5. Check in your changes (to the branch).
6. Repoint the base tag at the new base revisions:
cvs rtag -F -r ${b}-nbase ${b}-base ${m}
7. If no regular syncs with HEAD are expected, delete the new base tags:
cvs rtag -d ${b}-nbase ${m}
http://www.netbsd.org/developers/cvs-repos/branch.html
http://www2.cs.utah.edu/impulse/cvs/index.html