The following is a brief description of Northeastern University's use of CVS to manage local SCIRun software development.
We are treating SCI Institute as a software vendor and using CVS's built-in capability to track third-party sources in parallel with the modifications we make to that source. As we download releases from SCI Institute, we use the import command to check the SCIRun/BioPSE source code and documentation onto a vendor branch in our local repository. CVS automatically establishes a main trunk, along which development versions of files get stored. Initially, files are “copied” from the vendor branch to the main trunk. As we check out files, make modifications, and/or add new files, and commit these changes, our modifications appear as new versions of these files on the main trunk. When a new release of SCIRun/BioPSE becomes available, we use import again to store the new code on the vender branch. If a file has been both locally modified and changed in the new release, CVS gives a warning that the file from the new release must be merged into the main trunk. The checkout -j command is useful for doing this merge and is probably best issued on a file-by-file basis. If a file has been locally modified but not changed by the new release, no change is required; the locally modified file remains unchanged on the main trunk. If a file has not been locally modified, but changes from one release to the next, the new release revision is automatically “copied” to the main trunk. CVS reserves the tag “HEAD” to identify the latest revision of a file in the repository, which in our case will probably always be on the main trunk.
The CVS manual is quite useful and available at www.cvshome.org along with the CVS downloads. The cvs manpage is also very informative.