Adding cvsignore 

cvs co CVSROOT
$ cvs add cvsignore
cvs add: scheduling file `cvsignore' for addition
cvs add: use 'cvs commit' to add this file permanently
$ cvs commit
RCS file: /export/cvs/CVSROOT/cvsignore,v
done
Checking in cvsignore;
/export/cvs/CVSROOT/cvsignore,v  <--  cvsignore
initial revision: 1.1
done
cvs commit: Rebuilding administrative file database

CVS FAQ: CVS Ignore 

http://www.loria.fr/~molli/fom-serve/cache/271.html

The "update" and "import" commands use collections of Unix wildcards to skip over files and directories matching any of those patterns.

You may add to the built-in ignore list by adding lines of whitespace-separated wildcards to the following places: (They are read in this order.)

In a file named "cvsignore" in $CVSROOT/CVSROOT.

A Repository Administrator uses this to add site-specific
files and patterns to the built-in ignore list.

In a file named ".cvsignore" in your home directory.

For user-specific files.  For example, if you use "__" as
your default junk file prefix, you can put "__*" in your
.cvsignore file.
People who play around exclusively in directory trees where the
Makefiles are generated by "imake" or "configure" might want to
put "Makefile" in their ignore list, since they are all
generated and usually don't end up in the Repository.

In the CVSIGNORE environment variable.

For session-specific files.

Via the '-I' option on "import" or "update" commands.

For this-command-only files.

In a file named ".cvsignore" within each directory.

The contents of a ".cvsignore" file in each directory is
temporarily added to the ignore list.  This way you can ignore
files that are peculiar to that directory, such as executables
and other generated files without known wildcard patterns.
In any of the places listed above, a single '!' character nulls
out the ignore list.  A Repository administrator can use this to
override, rather than enhance, the built-in ignore list.  A user
can choose to override the system-wide ignore list.  For example,
if you place "! *.o *.a" in your .cvsignore file, only *.o *.a
files, plus any files a local-directory .cvsignore file, are
ignored.
A variant of the ignore-file scheme is used internally during
checkout.  "Module names" found in the modules file (or on the
"checkout" command line) that begin with a '!' are ignored during
checkout.  This is useful to permanently ignore (if the '!' path
is in the modules file) or temporarily ignore (if the '!' path is
on the command line) a sub-directory within a Repository
hierarchy.  For example:
cvs checkout !gnu/emacs/tests gnu/emacs
would checkout the module (or relative path within $CVSROOT) named
"gnu/emacs", but ignore the "tests" directory within it.

CVS Ignore Spec 

http://www.atd.ucar.edu/software/jcvs/manual/misc/ignorespec.html

There are many times during the operation of CVS that you wish to ignore certain files. For instance, if you were about to import your latest Java servlet, you would not wish to have the class files imported along with the source files.

To accomodate this problem, CVS defines ignore specs which describe files that are to be ignored. The ignore specs work much like the old "globbing" expressions used by some shells.

Ignore specs match file names, but they allow for two wildcard characters. The character '*' will match any number of any characters, and the '?' character will match any single character.

Ignore specs are separated by spaces. This is a problem for developers that allow spaces in their filenames.

Examples Here are some examples of CVS ignore specs.

*.class *.txt *.jar

This is a common ignore spec used by Java developers. It will ignore all
class files, all JAR files, and text files. Thus, all of the following files
would be ignored: Main.class, Utility.class, app.jar, notes.txt,
stackTrace.txt.

*.o *.a core *.so

This is a common ignore spec used by C developers. It will ignore all object
files, library files, shared library files, and core files.