The dev-tools module has a script in it called "cvs-wrap" which adds some features to CVS. It does this by checking the first argument, then intercepting control if it's one of the known extension commands. Otherwise, it simply launches cvs as usual.
To use it, you need to get it in your path. The best idea is probably to just make sure the dev-tools directory is always in your path.
Once it's in your path, you can either remember to always type "cvs-wrap" instead of "cvs", or you can define an alias. In bash, it looks like this: alias cvs=cvs-wrap.
Here are the extensions to cvs written so far:
This calls the cvs-select command (assuming it is in your path), which prints a list of files which all have a certain CVS tag.
Here's an example:
% cvs tag the-tag README % cvs select the-tag README
See make-dist for an example of how these per-file tags are used.
This command is a pared-down version of "cvs status" which will tell you at a gance what the heck is going on with your files. It helps you figure out which files need to be checked back in, and which are out of date with respect to the repository.
% cvs state File: README Status: Locally Modified File: VERSION Status: Locally Modified File: Version.pm Status: Locally Modified
This is a shortcut for "cvs update -d -P". The -d insures that CVS fetches any new directories that have been created in the project since your copy was last updated. The -P insures that empty directories don't end up in your local copy.