cvs - Concurrent Versions System


cvs [ ''cvs_options''?

cvs_command [ ''command_options''? ''command_args''?


This manpage is a summary of some of the features of cvs but for more in-depth documentation, consult the Cederqvist manual (as described in the SEE ALSO section of this manpage).


CVS is a version control system, which allows you to keep old versions of files (usually source code), keep a log of who, when, and why changes occurred, etc., like RCS or SCCS. Unlike the simpler systems, CVS does not just operate on one file at a time or one directory at a time, but operates on hierarchical collections of directories consisting of version controlled files. CVS helps to manage releases and to control the concurrent editing of source files among multiple authors. CVS allows triggers to enable/log/control various operations and works well over a wide area network.

cvs keeps a single copy of the master sources. This copy is called the source ``repository''; it contains all the information to permit extracting previous software releases at any time based on either a symbolic revision tag, or a date in the past.


cvs provides a rich variety of commands (cvs_command in the Synopsis), each of which often has a wealth of options, to satisfy the many needs of source management in distributed environments. However, you don't have to master every detail to do useful work with cvs; in fact, five commands are sufficient to use (and contribute to) the source repository.

cvs checkout modules...

A necessary preliminary for most cvs work: creates your private copy of the source for modules (named collections of source; you can also use a path relative to the source repository here). You can work with this copy without interfering with others' work. At least one subdirectory level is always created.

cvs update

Execute this command from within your private source directory when you wish to update your copies of source files from changes that other developers have made to the source in the repository.

cvs add file...

Use this command to enroll new files in cvs records of your working directory. The files will be added to the repository the next time you run `cvs commit'. Note: You should use the `cvs import' command to bootstrap new sources into the source repository. `cvs add' is only used for new files to an already checked-out module.

cvs remove file...

Use this command (after erasing any files listed) to declare that you wish to eliminate files from the repository. The removal does not affect others until you run `cvs commit'.

cvs commit file...

Use this command when you wish to ``publish'' your changes to other developers, by incorporating them in the source repository.


The cvs command line can include cvs_options, which apply to the overall cvs program; a cvs_command, which specifies a particular action on the source repository; and command_options and command_arguments to fully specify what the cvs_command will do.

Warning: you must be careful of precisely where you place options relative to the cvs_command. The same option can mean different things depending on whether it is in the cvs_options position (to the left of a cvs command) or in the command_options position (to the right of a cvs command).

There are only two situations where you may omit cvs_command: `cvs -H' or `cvs --help' elicits a list of available commands, and `cvs -v' or `cvs --version' displays version information on cvs itself.


As of release 1.6, cvs supports GNU style long options as well as short options. Only a few long options are currently supported, these are listed in brackets after the short options whose functions they duplicate.

Use these options to control the overall cvs program:

-H [ --help?

Display usage information about the specified cvs_command (but do not actually execute the command). If you don't specify a command name, `__cvs

  • H__' displays a summary of all the commands



Causes the command to be really quiet; the command will generate output only for serious problems.


Causes the command to be somewhat quiet; informational messages, such as reports of recursion through subdirectories, are suppressed.

-b bindir

Use bindir as the directory where RCS programs are located (CVS 1.9 and older). Overrides the setting of the RCSBIN environment variable. This value should be specified as an absolute pathname.

-d CVS_root_directory

Use CVS_root_directory as the root directory pathname of the master source repository. Overrides the setting of the CVSROOT environment variable. This value should be specified as an absolute pathname.

-e editor

Use editor to enter revision log information. Overrides the setting of the CVSEDITOR , VISUAL , and EDITOR environment variables.


Do not read the cvs startup file (/.cvsrc).


Do not log the cvs_command in the command history (but execute it anyway). See the description of the history command for information on command history.


Do not change any files. Attempt to execute the cvs_command, but only to issue reports; do not remove, update, or merge any existing files, or create any new files.


Trace program execution; display messages showing the steps of cvs activity. Particularly useful with -n to explore the potential impact of an unfamiliar command.


Makes new working files read-only. Same effect as if the CVSREAD environment variable is set.

-v [ --version?

Displays version and copyright information for cvs.


Makes new working files read-write (default). Overrides the setting of the CVSREAD environment variable.


Encrypt all communication between the client and the server. As of this writing, this is only implemented when using a Kerberos connection.

-z compression-level

When transferring files across the network use gzip with compression level compression-level to compress and de-compress data as it is transferred. Requires the presence of the GNU gzip program in the current search path at both ends of the link.


Except when requesting general help with `cvs -H', you must specify a cvs_command to cvs to select a specific release control function to perform. Each cvs command accepts its own collection of options and arguments. However, many options are available across several commands. You can display a usage summary for each command by specifying the -H option with the command.


Normally, when CVS starts up, it reads the .cvsrc file from the home directory of the user reading it. This startup procedure can be turned off with the -f flag.

The .cvsrc file lists CVS commands with a list of arguments, one command per line. For example, the following line in .cvsrc:

diff -c

will mean that the `cvs diff' command will always be passed the -c option in addition to any other options that are specified in the command line (in this case it will have the effect of producing context sensitive diffs for all executions of `cvs diff' ).


Here are brief descriptions of all the cvs commands:


Add a new file or directory to the repository, pending a `cvs commit' on the same file. Can only be done from within sources created by a previous `cvs checkout' invocation. Use `cvs import' to place whole new hierarchies of sources under cvs control. (Does not directly affect repository; changes working directory.)


Execute control functions on the source repository. (Changes repository directly; uses working directory without changing it.)


Make a working directory of source files for editing. (Creates or changes working directory.)


Apply to the source repository changes, additions, and deletions from your working directory. (Changes repository.)


Show differences between files in working directory and source repository, or between two revisions in source repository. (Does not change either repository or working directory.)


Prepare copies of a set of source files for shipment off site. Differs from `cvs checkout' in that no cvs administrative directories are created (and therefore `cvs commit' cannot be executed from a directory prepared with `cvs export'), and a symbolic tag must be specified. (Does not change repository; creates directory similar to working directories).


Show reports on cvs commands that you or others have executed on a particular file or directory in the source repository. (Does not change repository or working directory.) History logs are kept only if enabled by creation of the `$CVSROOT/CVSROOT/history' file; see cvs(5).


Incorporate a set of updates from off-site into the source repository, as a ``vendor branch''. (Changes repository.)


Initialize a repository by adding the CVSROOT subdirectory and some default control files. You must use this command or initialize the repository in some other way before you can use it.


Display log information. (Does not change repository or working directory.)


Prepare a collection of diffs as a patch file between two releases in the repository. (Does not change repository or working directory.)


Cancel a `cvs checkout', abandoning any changes. (Can delete working directory; no effect on repository.)


Remove files from the source repository, pending a `cvs commit' on the same files. (Does not directly affect repository; changes working directory.)


Explicitly specify a symbolic tag for particular revisions of files in the source repository. See also `cvs tag'. (Changes repository directly; does not require or affect working directory.)


Show current status of files: latest version, version in working directory, whether working version has been edited and, optionally, symbolic tags in the RCS file. (Does not change repository or working directory.)


Specify a symbolic tag for files in the repository. By default, tags the revisions that were last synchronized with your working directory. (Changes repository directly; uses working directory without changing it.)


Bring your working directory up to date with changes from the repository. Merges are performed automatically when possible; a warning is issued if manual resolution is required for conflicting changes. (Changes working directory; does not change repository.)


This section describes the command_options that are available across several cvs commands. Not all commands support all of these options; each option is only supported for commands where it makes sense. However, when a command has one of these options you can count on the same meaning for the option as in other commands. (Other command options, which are listed with the individual commands, may have different meanings from one cvs command to another.) Warning: the history command is an exception; it supports many options that conflict even with these standard options.

-D date_spec

Use the most recent revision no later than date_spec (a single argument, date description specifying a date in the past). A wide variety of date formats are supported, in particular ISO ( date_spec is interpreted as being in the local timezone, unless a specific timezone is specified. The specification is ``sticky'' when you use it to make a private copy of a source file; that is, when you get a working file using -D, cvs records the date you specified, so that further updates in the same directory will use the same date (unless you explicitly override it; see the description of the update command). -D is available with the checkout, diff, history, export, rdiff, rtag, and update commands. Examples of valid date specifications include:

1 month ago 2 hours ago 400000 seconds ago last year last Monday yesterday a fortnight ago 3/31/92 10:00:07 PST January 23, 1987 10:05pm 22:00 GMT


When you specify a particular date or tag to cvs commands, they normally ignore files that do not contain the tag (or did not exist on the date) that you specified. Use the -f option if you want files retrieved even when there is no match for the tag or date. (The most recent version is used in this situation.) -f is available with these commands: checkout, export, rdiff, rtag, and update.

-k kflag

Alter the default processing of keywords. The -k option is available with the add, checkout, diff, export, rdiff, and update commands. Your kflag specification is ``sticky when you use it to create a private copy of a source file; that is, when you use this option with the checkout or update commands, cvs associates your selected kflag'' with the file, and continues to use it with future update commands on the same file until you specify otherwise.

Some of the more useful kflags are -ko and -kb (for binary files), and -kv which is useful for an export where you wish to retain keyword information after an import at some other site.


Local; run only in current working directory, rather than recurring through subdirectories. Available with the following commands: checkout, commit, diff, export, remove, rdiff, rtag, status, tag, and update. Warning: this is not the same as the overall `__cvs

  • l__' option, which you can specify to the left of

a cvs command!


Do not run any checkout/commit/tag/update program. (A program can be specified to run on each of these activities, in the modules database; this option bypasses it.) Available with the checkout, commit, export, and rtag commands. Warning: this is not the same as the overall `cvs -n' option, which you can specify to the left of a cvs command!


Prune (remove) directories that are empty after being updated, on checkout, or update. Normally, an empty directory (one that is void of revision-controlled files) is left alone. Specifying -P will cause these directories to be silently removed from your checked-out sources. This does not remove the directory from the repository, only from your checked out copy. Note that this option is implied by the -r or -D options of checkout and export.


Pipe the files retrieved from the repository to standard output, rather than writing them in the current directory. Available with the checkout and update commands.

-r tag

Use the revision specified by the tag argument instead of the default ``head'' revision. As well as arbitrary tags defined with the tag or rtag command, two special tags are always available: `HEAD' refers to the most recent version available in the repository, and `BASE' refers to the revision you last checked out into the current working directory.

The tag specification is ``sticky when you use this option with `cvs checkout' or `cvs update' to make your own copy of a file: cvs remembers the tag and continues to use it on future update commands, until you specify otherwise. tag can be either a symbolic or numeric tag. Specifying the -q global option along with the -r command option is often useful, to suppress the warning messages when the RCS file does not contain the specified tag. -r is available with the checkout, commit, diff, history, export, rdiff, rtag, and update commands. Warning:'' this is not the same as the overall `__cvs

  • r__' option, which you can specify to the left of

a cvs command!


Here (finally) are details on all the cvs commands and the options each accepts. The summary lines at the top of each command's description highlight three kinds of things:

Command Options and Arguments

Special options are described in detail below; common command options may appear only in the summary line.

Working Directory, or Repository?

Some cvs commands require a working directory to operate; some require a repository. Also, some commands change the repository, some change the working directory, and some change nothing.


Many commands have synonyms, which you may find easier to remember (or type) than the principal name.

add [__-k__ ''kflag''?

Fatal Error:

lib/CachedMarkup.php (In template 'browse' < 'body' < 'html'):257: Error: Pure virtual

lib/main.php:944: Notice: PageInfo: Cannot find action page

lib/main.php:839: Notice: PageInfo: Unknown action

Fatal PhpWiki Error

lib/CachedMarkup.php (In template 'browse' < 'body' < 'html'):257: Error: Pure virtual