CVS(1)

NAME
cvs - OpenCVS Concurrent Versioning System

SYNOPSIS
cvs [-flnQqRrtVvw] [-d root] [-e editor] [-s var=val] [-T tmpdir] [-z level] command ...

DESCRIPTION
The cvs program acts as both client and server for the use of and administration of a CVS source repository. CVS is used to maintain version information on files that are kept in a repository. Although it is more commonly used to track changes in source code, there are no real limitations to the type of files that can be stored in a repository. For a general introduction to CVS, see cvsintro(7).

cvs reads its startup configuration file, .cvsrc, from the home directory of the user who invoked it. This file is used to specify implicit options passed to cvs or one of its commands whenever it is invoked. The defaults in the configuration file can be overridden with the -f option (see below). See cvs(5) for further information.

cvs also supports keyword substitution – see the rcs(1) man page for more information.

The following options are supported:

-d root
    Use root as the path to the root directory of the CVS repository. The value must specify an absolute path.

-e editor
    Use the program editor whenever editing log information. This option overrides the environment variables CVSEDITOR, VISUAL, and EDITOR.

-f  Do not read the user's configuration file on startup.

-l  Suppress logging of history information.

-n  Dry-run mode. Show which files will be used by the command issued without really running it.

-Q  Be extra quiet. Only error messages will be displayed.

-q  Be quiet about reporting.

-R  Permit checkout from a read-only repository. Implies -l. See also CVSREADONLYFS, below.

-r  Extract files in read-only mode.

-s var=val
    Set the value of the internal variable var to the string val.

-T tmpdir
    Set the value of the directory where temporary files are to be created. The default is set to /tmp. This option overrides the TMPDIR environment variable.

-t  Trace program execution.

-V  Verbose mode. All messages will be displayed. This is the default. -V and -Q are mutually exclusive. If both are specified, -Q takes precedence.

-v  Display version information and exit.

-w  Extract new files in read-write mode. Overrides the setting of the CVSREAD environment variable. This is the default unless CVSREAD is set or the -r option is specified.

-z level
    Specify the compression level to gzip(1) when transferring files. The compression level ranges from 1 to 9, with 1 being the fastest, and 9 providing the best level of compression. The default is 6.

COMMANDS
cvs supports the following commands: add, admin, annotate, checkout, commit, diff, edit, editors, export, history, import, init, kserver, log, rannotate, rdiff, release, remove, rlog, rtag, server, status, tag, unedit, update, version, watch, watchers. The commands are fully explained in this section.

Files may be selected by revision or, where no revision is specified, the latest revision of the default branch is used. Revisions are specified either by using the -r option or by appending the revision number to any option that supports it.

cvs supports the notion of state. The state is an arbitrary string of characters used to describe a file (or a specific revision of a file). States can be set or changed using the -s option, for CVS tools which support it. The state of a file/revision can be modified without having to commit a new file/revision. The default state is ‘Exp’ (Experimental). Examples of states could be ‘Dev’, ‘Reviewed’, or ‘Stab’.

  add
Before a file is known to cvs, it must be added to the repository using this command. Adding a file does not actually publish the contents of the file: the commit command must also be used to publish it into the repository, and thus let others access the file.

Note: since directories have no versioning system, it is sufficient to add them with the add command alone; the commit command is not necessary.

    usage: cvs add [-k mode] [-m msg] file ...

The add command takes the following options:

-k mode
    Specify the keyword substitution mode.

-m msg
    Attach log message msg. By default, no log message is required.

Aliases: ad, new.

  admin
The admin command is used to directly modify the RCS files.

    usage: cvs admin [-Iq] [-b branch] [-k mode] [-m rev:msg]
                     [-N tag[:rev]] [-n tag[:rev]] [-o rev]
                     [-s state[:rev]] [-t file | str]

The admin command takes the following options:

-b branch
    Set the default branch to branch.

-I  Command is interactive.

-k mode
    Specify the keyword substitution mode.

-m rev:msg
    Change the log message of a revision.

-N  tag[:rev] Same as -n, but override tag if it already exists.

-n  tag[:rev] Associate the tag with the rev or the branch given as argument. If the revision or the branch is not specified, the tag is deleted. The ‘’: character means the association of the tag and the latest revision of the default branch. A branch number ending with the ‘’. character means the current latest revision in the branch. This option is functionally the same as the rtag command, but it avoids the check of the tags done with the CVSROOT/taginfo file.

-o rev
    Delete one or more revisions. The specifications of the values or revisions are as follows:

    rev Specific revision.

    rev1:rev2
        Delete all revisions of a branch between rev1 and rev2.

    rev1::rev2
        Delete all revisions of a branch between rev1 and rev2 without deleting revisions rev1 and rev2.

    :rev
        Delete all revisions of the branch until revision rev.

    rev:
        Delete all revisions of the branch from revision rev until the last revision of the branch.

-q  Quiet mode.

-s  state[:rev] Change state of a revision.

-t file str
    Change the descriptive text. The descriptive text is taken from the file specified as argument or from the string str given as argument if it is preceded by the ‘-’ character. If no argument is used, the descriptive text is taken from standard input.

Aliases: adm, rcs.

  annotate
For each line of any files specified, show information about its last revision. The information given is the last revision when a modification occurred, the author's name, and the date of the revision.

    usage: cvs annotate [-flR] [-D date | -r rev] [file ...]

The annotate command takes the following options:

-D date
    Show the annotations as of the latest revision no later than date.

-f  Force the use of the head revision if the specified tag or date is not found. This can be used in combination with -D or -r to ensure that there is some output from the annotate command, even if only to show Revision 1.1 of the file.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

-r rev
    Show annotations as of revision rev (can be a revision number or a tag).

Aliases: ann, blame.

  checkout
The checkout command is used to create a local copy of one or more modules present on the target CVS repository.

    usage: cvs checkout [-AcflNnPpRs] [-d dir] [-j rev] [-k mode]
                        -D date | -r rev module ...

The checkout command takes the following options:

-A  Reset any sticky tags, dates, or keyword substitution modes that have been set on the tree.

-c  Display the list of available modules.

-D date
    Check out as of the latest revision no later than date (implies -P) (is sticky).

-d dir
    Check out in directory dir instead of the directory bearing the same name as the module.

-f  Force the use of the head revision if the specified tag or date is not found.

-j rev
    Merge in changes made between current revision and rev. If two -j options are specified, only merge the differences between the two revisions of the branch. This allows successive merges without having to resolve already resolved conflicts again.

-k mode
    Specify the keyword substitution mode (is sticky).

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-N  If used in conjunction with the -d option, files are placed in local directory module, located in directory dir.

-n  Do not execute programs listed in the CVSROOT/modules file.

-P  Prune empty directories.

-p  Check out files to standard output (avoids stickiness).

-R  Enable recursive behaviour. This is the default.

-r rev
    Check out from a particular revision or branch (implies -P) (is sticky).

-s  Like -c, but include module status.

Aliases: co, get.

  commit
The commit command is used to send local changes back to the server and update the repository's information to reflect the changes.

    usage: cvs commit [-flnR] [-F logfile | -m msg] [-r rev] [file ...]

The commit command takes the following options:

-F logfile
    Specify a file which contains the log message.

-f  Force a file to be committed, even though it is unchanged.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-m msg
    Specify a log message on the command line (suppresses the editor invocation).

-n  Do not execute programs listed in the CVSROOT/modules file.

-R  Enable recursive behaviour. This is the default.

-r rev
    Commit to a particular symbolic or numerical revision.

Aliases: ci, com.

  diff
The diff command is very similar to the diff(1) program, except that the differential comparisons that it generates are between local or remote revisions of files stored in the CVS repository.

    usage: cvs diff [-abcdilNnpRuw]
                    [[-D date1 | -r rev1] [-D date2 | -r rev2]]
                    [-k mode] [file ...]

The diff command takes the following options:

-a  Treat all files as ASCII text. See diff(1) for more information.

-b  Causes trailing blanks (spaces and tabs) to be ignored, and other strings of blanks to compare equal.

-c  Produces a diff with three lines of context. See diff(1) for more information.

-D date1
    [-D date2] Differences between the revision at date1 and the working copy or date1 and date2 (if specified).

-d  Try very hard to produce a diff as small as possible. See diff(1) for more information.

-i  Ignore the case of letters. For example, ‘A’ will compare equal to ‘a’.

-k mode
    Specify the keyword substitution mode.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-N  Include added or removed files.

-n  Produces a diff in the same format as that used by rcsdiff(1), with a count of changed lines on each insert or delete command.

-p  With unified and context diffs, show with each change the first 40 characters of the last line before the context beginning with a letter, an underscore or a dollar sign. See diff(1) for more information.

-R  Enable recursive behaviour. This is the default.

-r rev1
    [-r rev2] Differences between revision rev1 and the working copy or rev1 and rev2 (if specified).

-t  Will expand tabs in output lines. Normal or -c output adds character(s) to the front of each line which may screw up the indentation of the original source lines and make the output listing difficult to interpret. This option will preserve the original source's indentation.

-u  Produces a unified diff with three lines of context. See diff(1) for more information.

-w  Is similar to -b but causes whitespace (blanks and tabs) to be totally ignored. For example, “if ( a == b”) will compare equal to “if(a==b)”.

Aliases: di, dif.

  edit
The edit command is used to make a file that is being watched (and therefore read-only) readable and writable and to inform others that it is in the process of being changed. Notifications terminate when the commit command is issued. Editing rights on the file can be given up using the unedit command, which terminates the temporary notifications.

    usage: cvs edit [-lR] [-a action] [file ...]

The edit command takes the following options:

-a action
    Specify the temporary notification wanted:

    commit
        Another user has committed changes to the file.
    edit
        Another user has issued the edit command on the file.
    unedit
        Another user has issued the unedit command on the file.
    all All of the above.
    none
        None of the above.

    The -a flag may appear more than once, or not at all. If omitted, the action defaults to all.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

  editors
The editors command lists the users with edition rights on a file. For that, pseudo-lock mode must be enabled (see the watch command). The e-mail address of the user editing the file, the timestamp when the edition first started, the host from where the edition has been requested and the path to the edited file are listed.

    usage: cvs editors [-lR] [file ...]

The editors command takes the following options:

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

  export
The export command extracts a copy of module without including the directories used for management by cvs. This eases production of a software release. A date or a revision must be specified for the command to be valid, which ensures that later extractions can be reproduced with the same options as the release.

The checked out module's files will be placed in a directory bearing the same name as the checked out module, by default.

    usage: cvs export [-flNnR] [-d dir] [-k mode]
                      -D date | -r rev module ...

The export command takes the following options:

-D date
    Export as of the latest revision no later than date.

-d dir
    Export in directory dir instead of the directory bearing the same name as the module.

-f  Force the use of the head revision if the specified tag or date is not found. This can be used in combination with -D or -r to ensure that the export command is valid.

-k mode
    Specify the keyword substitution mode: the -k v option is often used to avoid substitution of keywords during a release cycle. However, be aware that it does not handle an export containing binary files correctly.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-N  If used in conjunction with the -d option, files are placed in local directory module, located in directory dir.

-n  Do not execute programs listed in the CVSROOT/modules file.

-R  Enable recursive behaviour. This is the default.

-r rev
    Export from a particular symbolic or numerical revision.

Aliases: ex, exp.

  history
The history command is used to display the history of actions done in the base repository. This functionality is only available if the CVSROOT/history file has been created. Only the checkout, commit, export, release, rtag, and update commands are logged into this file.

    usage: cvs history [-aceloTw] [-b str] [-D date] [-f file]
                       [-m module] [-n module] [-p path] [-r rev]
                       [-t tag] [-u user] [-x ACEFGMORTUW] [-z tz]
                       [file ...]

The history command takes the following options:

-a  Display records for all users. By default, only records from the user issuing the history command are displayed.

-b str
    Display everything back to a record containing the string str in either the module name, the file name, or the repository path.

-c  Display the archived files (commit command).

-D date
    Report no later than date.

-e  Select all records (same as -x with all types).

-f file
    Display records related to file.

-l  Show last checkouts of modules with the checkout command.

-m module
    Look for the module (can be used several times).

-n module
    Search into the module.

-o  Report on modules checked out by users.

-p path
    Display records from the base repository being in the directory specified by the path.

-r rev
    Report for a particular revision (checks in the RCS file).

-T  Report on all tags.

-t tag
    Report since tag record placed in the CVSROOT/history file by any user.

-u user
    Report for a specified user. Can be used several times to match many users.

-w  Check that records match the current working directory.

-x ACEFGMORTUW
    Extract by a specific record type specified by a single letter. They can be used in combination. The available types are as follows:

    A   A file has been added with the add command.

    C   A merge has been done, but unresolved conflicts still remain.

    E   Export.

    F   Release.

    G   A merge has been done without conflict.

    M   A file has been modified (using the commit command).

    O   Checkout.

    R   A file has been removed with the remove command.

    T   Rtag.

    U   Normal update.

    W   The file has been deleted from the directory because it does not exist anymore in the base repository.

-z tz
    Display records with the time synchronized with timezone tz.

All records have the following five first columns:

-   The record type (the -x option).
-   The date of the action.
-   The time of the action.
-   The time zone.
-   The user who made the action.

The other columns vary depending on the command issued:

For records coming from the rtag command, the additional columns are as follows:

    <module> [<tag>:<argument>] {<working directory>}

For records coming from the checkout and export commands, the additional columns are as follows:

    <request> <repository> =<module>= <working directory>

For records coming from the release command, the additional columns are as follows:

    =<module>= <working directory>

For records coming from the commit and update commands, the additional columns are as follows:

    <version> <file> <module> == <working directory>

Aliases: hi, his.

  import
Import sources into CVS using vendor branches.

At least three arguments are required: module specifies the location of the sources to be imported; vendortag is a tag for the entire branch; releasetag is used to identify the files created with cvs import.

    usage: cvs import [-d] [-b branch] [-I ign] [-k mode] [-m msg]
                      [-W spec] module vendortag releasetag

The import command takes the following options:

-b branch
    Specify the first-level branch number.

-d  Use the file's last modification time as the timestamp for the initial revisions.

-I ign
    Ignore files specified by ign. This option can be used several times on the command line. To see all files, use the -I file ...! specification.

-k mode
    Specify the keyword substitution mode (is sticky).

-m msg
    Specify the log message to send.

-W spec
    Wrappers specification line.

Aliases: im, imp.

  init
Create a CVS repository if it doesn't exist.

  kserver
Start a Kerberos authentication server.

  log
The log command displays information on a file such as its different revisions, description, different tags, as well as the comments, dates, and authors of these revisions. By default, the log command displays all the available information; the options are only used to restrict the displayed information.

    usage: cvs log [-bhlNRt] [-d dates] [-r revs] [-s state]
                   [-w users] [file ...]

The log command takes the following options:

-b  List revisions of the default branch only.

-d dates
    Specify revisions with dates matching the specification. The specification might be as follows:

    date1<date2 or date2>date1
        Select all revisions between date1 and date2.

    <date or date>
        Select all revisions before date.

    >date or date<
        Select all revisions after date.

    date
        Select the latest revision before or equal to date.

    The ‘’ and ‘’ characters can be followed by the ‘=’ character to imply an inclusive specification. Several specifications can be used by separating them with the ‘’; character.

-h  Print header only.

-l  Limit the scope of the search to the local directory only.

-N  Do not list tags.

-R  Print name of RCS file only.

-r revs
    Specify revision(s) to list:

    rev1,rev2,...
        A list of revisions is specified by separating names or numbers of revisions by the ‘’, character.

    rev1:rev2
        List all revisions between rev1 and rev2 (they must be on the same branch).

    :rev
        List all revisions since the beginning of the branch until rev included.

    rev:
        List all revisions of the branch beginning with rev.

    branch
        List all revisions of a branch.

    branch.
        List the latest revision of the branch branch.

    branch1:branch2
        List all revisions of branches between branch1 and branch2.

    Without argument, the -r option means the latest revision of the default branch.

-s state
    List revisions of the specified state only. Several states can be listed by separating them with the ‘’, character.

-t  Print header and description only.

-w users
    Do not list revisions made by specified users. Usernames should be separated by the ‘’, character.

Aliases: lo.

  rannotate
For each line of any files specified, show information about its last revision. The information given is the last revision when a modification occurred, the author's name, and the date of the revision. This command does not need a local checkout of the repository to work.

    usage: cvs rannotate [-flR] [-D date | -r rev] module ...

The rannotate command takes the following options:

-D date
    Show the annotations as of the latest revision no later than date.

-f  Force the use of the head revision if the specified tag or date is not found. This can be used in combination with -D or -r to ensure that there is some output from the rannotate command, even if only to show Revision 1.1 of the file.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

-r rev
    Show annotations as of revision rev (can be a revision number or a tag).

Aliases: rann, ra.

  rdiff
The rdiff command lists differences between two revisions in a patch(1) compatible format. This command does not need a local checkout of the repository to work.

    usage: cvs rdiff [-flR] [-c | -u] [-s | -t] [-V ver]
                     -D date | -r rev [-D date2 | -r rev2]
                     module ...

The rdiff command takes the following options:

-c  Produces a diff with three lines of context. See diff(1) for more information. This is the default.

-D date
    [-D date2] Differences between the revision at date and the working copy or date and date2 (if specified).

-f  Force the use of the head revision if the specified date or revision is not found.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

-r rev
    [-r rev2] Differences between revision rev and the working copy or rev and rev2 (if specified).

-s  Create a summary change instead of a whole patch.

-t  Lists differences between the last two revisions of each file.

-u  Produces a diff in unidiff format.

-V ver
    Use the RCS version ver for keyword substitution.

Aliases: pa, patch.

  release
The release command indicates to cvs that the working copy of a module is no longer in use and checks that non archived modifications in the base repository do exist. This command is not mandatory. Local directories could always be removed without using it, but in this case the handling of history information will no longer be correct (see the history command).

    usage: cvs release [-d] dir ...

The release command takes the following options:

-d dir
    Remove the directory dir. Be aware that this option silently removes any directories that have been added to the local working copy without using the add command.

For each file not being synchronized with the base repository, a single letter prefix is given to specify the state of the file. The possible prefixes are as follows:

?   The file is unknown to cvs and is not in the list of files to ignore. Any new directories which have not been added with the add command are silently ignored as well as their content.

A   The file has been added with the add command, but has not been committed to the repository with the commit command.

M   The file has been locally modified; a more recent version might exist in the base repository.

R   The file has been removed with the remove command, but has not been committed to the repository with the commit command.

U   A more recent version of the file does exist but it is not locally up to date.

Aliases: re, rel.

  remove
The remove command is used to inform cvs that file is scheduled to be removed from the repository. Files are not actually removed from the repository until the commit command has been run subsequently.

There is no way to remove a directory with the remove command. cvs will only remove a directory if it is empty and if the checkout or update commands are run with the -P option. (Note that the export command always removes empty directories.)

    usage: cvs remove [-flR] [file ...]

The remove command takes the following options:

-f  Force local file removal. If this flag is not used, the file must be locally removed beforehand for the command to be valid.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

Aliases: rm, delete.

  rlog
The rlog command displays information on a file such as its different revisions, description, different tags, as well as the comments, dates, and authors of these revisions. By default, the rlog command displays all the available information; the options are only used to restrict the displayed information. This command does not need a local checkout of the repository to work.

    usage: cvs rlog [-bhlNRt] [-d dates] [-r revs] [-s state]
                   [-w users] module ...

The rlog command takes the following options:

-b  List revisions of the default branch only.

-d dates
    Specify revisions with dates matching the specification. The specification might be as follows:

    date1<date2 or date2>date1
        Select all revisions between date1 and date2.

    <date or date>
        Select all revisions before date.

    >date or date<
        Select all revisions after date.

    date
        Select the latest revision before or equal to date.

    The ‘’ and ‘’ characters can be followed by the ‘=’ character to imply an inclusive specification. Several specifications can be used by separating them with the ‘’; character.

-h  Print header only.

-l  Limit the scope of the search to the local directory only.

-N  Do not list tags.

-R  Print name of RCS file only.

-r revs
    Specify revision(s) to list:

    rev1,rev2,...
        A list of revisions is specified by separating names or numbers of revisions by the ‘’, character.

    rev1:rev2
        List all revisions between rev1 and rev2 (they must be on the same branch).

    :rev
        List all revisions since the beginning of the branch until rev included.

    rev:
        List all revisions of the branch beginning with rev.

    branch
        List all revisions of a branch.

    branch.
        List the latest revision of the branch branch.

    branch1:branch2
        List all revisions of branches between branch1 and branch2.

    Without argument, the -r option means the latest revision of the default branch.

-s state
    List revisions of the specified state only. Several states can be listed by separating them with the ‘’, character.

-t  Print header and description only.

-w users
    Do not list revisions made by specified users. Usernames should be separated by the ‘’, character.

Aliases: rlo.

  rtag
The rtag command adds a symbolic tag to one or more modules. It is often used to create a new branch using the -b option.

    usage: cvs rtag [-abdFflnR] [-D date | -r rev]
                    symbolic_tag module ...

The rtag command takes the following options:

-a  Clear tag from files already removed with the remove command.

-b  Create a branch.

-D date
    Tag the most recent revision before date.

-d  Delete tag.

-F  Move tag if it already exists. If this option is not used and a tag is used a second time, cvs will not execute the action.

-f  Force the use of the head revision if the specified revision or date is not found.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-n  Do not execute programs listed in the CVSROOT/modules file.

-R  Enable recursive behaviour. This is the default.

-r rev
    Tag at revision rev.

Aliases: rt, rfreeze.

  server
Server mode.

  status
The status command is used to display the state of checked out files.

    usage: cvs status [-lRv] [file ...]

The status command takes the following options:

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

-v  Display symbolic tags for file.

    The state may be one of the following:

    Locally Added
        The file has been added with the add command, but has not been committed to the repository with the commit command.

    Locally Modified
        The file is up to date, but has been locally modified.

    Locally Removed
        The file has been removed with the remove command, but has not been committed to the repository with the commit command.

    Needs Checkout
        The file has not been modified; a new version is available.

    Needs Merge
        The file has been modified and a newer version is available.

    Needs Patch
        Same as Needs Checkout but, in client-server mode, only the differences are sent to save network resources.

    Unresolved Conflict
        A merge has been done, but unresolved conflicts still remain.

    Up-to-date
        The file is up to date.

Aliases: st, stat.

  tag
The tag command adds a symbolic tag to a checked out version of one or more files.

    usage: cvs tag [-bcdFflR] [-D date | -r rev] [symbolic_tag]
                   [file ...]

The tag command takes the following options:

-b  Create a branch.

-c  Check that working files are not modified.

-D date
    Tag the most recent revision before date.

-d  Delete tag.

-F  Move tag if it already exists. If this option is not used and a tag is used a second time, cvs will not execute the action.

-f  Force the use of the head revision if the specified revision or date is not found.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

-r rev
    Tag at revision rev.

Aliases: ta, freeze.

  unedit
The unedit command is used to give up an edition on a file and thus cancel the wanted temporary notifications. If the file has been modified since the edit command has been issued, cvs will ask if it should go back to the previous version, and lose the modifications done on the file, or stay in edition mode on it.

    usage: cvs unedit [-lR] [file ...]

The unedit command takes the following options:

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

  update
The update command is used to merge any of the changes that have occurred on the remote repository into the local one where the command was run.

    usage: cvs update [-ACdflPpR] [-D date | -r rev] [-I ign]
                      [-j rev] [-k mode] [-W spec] [file ...]

The update command takes the following options:

-A  Reset any sticky tags, dates, or keyword substitution modes that have been set on the tree.

-C  Overwrite locally modified files with clean repository copies.

-D date
    Update as of the latest revision no later than date (is sticky).

-d  Create any new directories. Without this option, cvs does not create any new files sitting in these new directories added in the base repository since the last update of the working copy, or since the last update with the -d option.

-f  Force the use of the head revision if the specified tag or date is not found.

-I ign
    Ignore files specified by ign. This option can be used several times on the command line. To see all files, use the -I file ...! specification.

-j rev
    Merge in changes made between current revision and rev. If two -j options are specified, only merge the differences between the two revisions of the branch. This allows successive merges without having to resolve already resolved conflicts again.

-k mode
    Specify the keyword substitution mode (is sticky).

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-P  Prune any directories that have become empty as a result of the update.

-p  Send the result of the update to standard output (avoids stickiness).

-R  Enable recursive behaviour. This is the default.

-r rev
    Update from a particular revision or branch (is sticky).

-W spec
    Wrappers specification line.

By default, the update command does not create new directories; the -d option must be used for that.

For each file updated, a single letter prefix is given to specify the state of the file. The possible prefixes are as follows:

?   The file is unknown to cvs.

A   The file has been added with the add command, but has not been committed to the repository with the commit command.

C   A merge, with a more recent version of the file, has been done, but unresolved conflicts still remain.

M   The file has been locally modified; if a more recent version is available, the merge has been done without conflict.

P   The same as ‘U’, but, in client-server mode, only differences are sent to save network resources.

R   The file has been removed with the remove command, but has not been committed to the repository with the commit command.

U   The file is up to date.

Aliases: up, upd.

  version
Causes cvs to print its version information. If this command is issued within a local copy of a remote repository or if either the CVSROOT environment variable or the -d flag specify a remote repository, cvs will also connect to the server and ask it to print its version information.

Aliases: ve, ver.

  watch
The watch command switches a file from normal mode to pseudo-lock mode as well as handling the notifications associated with it. Pseudo-lock mode means knowing who is editing a file: for that, cvs extracts the file in read-only mode. Users must use the edit command to get the editing rights on the file.

One of the following arguments to the watch command is mandatory: on, off, add, or remove. on switches the file into pseudo-lock mode; off switches it back to normal mode; add adds notifications for specific actions on the file; remove removes those notifications.

The notifications are permanent. They remain in place until the watch remove command is issued while the temporary notifications are made available with the edit command.

    usage: cvs watch on | off | add | remove [-lR] [-a action]
                     [file ...]

The watch command takes the following options:

-a action
    Specify the permanent notification wanted for add | remove:

    commit
        Another user has committed changes to the file.
    edit
        Another user is editing the file.
    unedit
        Another user has finished editing the file.
    all All of the above.
    none
        No notification.

    If no specification is requested using the add or remove arguments, it implies the -a all option.

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

  watchers
The watchers command lists the users who asked for notifications as well as the notification details. The possible notifications are as follows:

commit
    Permanent watch of a commit of a new version of a file.

edit
    Permanent watch of the start of file edition.

tcommit
    Temporary watch of a commit of new version of a file.

tedit
    Temporary watch of the start of file edition.

tunedit
    Temporary watch of the end of file edition.

unedit
    Permanent watch of the end of file edition.

The temporary watches are set using the edit command, until the commit or unedit command is issued on a file.

    usage: cvs watchers [-lR] [file ...]

The watchers command takes the following options:

-l  Limit the scope of the search to the local directory only and disable recursive behaviour.

-R  Enable recursive behaviour. This is the default.

ENVIRONMENT

CVS_CLIENT_LOG
    This variable enables logging of all communications between the client and server when running in non-local mode. If set, this environment variable must contain a base path from which two paths will be generated by appending ".in" to the value for the server's input and ".out" for the server's output.

    The path can contain the following substitutes:

    %c  the command being run
    %d  the date
    %p  the process ID
    %u  the username of the person running it

    The substitutes are only supported by OpenCVS.

CVS_RSH
    Name of the program to use when connecting to the server through a remote shell. The default is to use the ssh(1) program.

CVS_SERVER
    If set, gives the name of the program to invoke as a cvs server when using remote shell. The default is to use `cvs'.

CVSEDITOR
    Name of the editor to use when editing commit messages. Checked before EDITOR and VISUAL.

CVSREAD
    If set, cvs extracts files in read-only mode.

CVSREADONLYFS
    Permit checkout from a read-only repository. Implies -l. See also -R, above.

CVSROOT
    When set, this variable should contain the string pointing to the root directory of the CVS repository. The contents of this variable are ignored when the -d option is given or if `Root' files exist in the checked-out copy.

EDITOR
    Name of the editor to use when editing commit messages. This is traditionally a line-oriented editor, such as ex(1).

HOME
    Directory where the .cvsignore and .cvsrc files are searched for.

TMPDIR
    When set, this variable specifies the directory where temporary files are to be created. The default is set to /tmp.

VISUAL
    Name of the editor to use when editing commit messages. This is traditionally a screen-oriented editor, such as vi(1).

EXIT STATUS

SEE ALSO
diff(1), gzip(1), patch(1), rcs(1), cvs(5), cvsintro(7)

STANDARDS
The flag [-x] has no effect and is provided for compatibility only.

HISTORY
The OpenCVS project is a BSD-licensed rewrite of the original Concurrent Versioning System written by Jean-Francois Brousseau. The original CVS code was written in large parts by Dick Grune, Brian Berliner and Jeff Polk.

AUTHORS
Jean-Francois Brousseau Vincent Labrecque Joris Vink Xavier Santolaria

CAVEATS
This CVS implementation does not fully conform to the GNU CVS version. In some cases, this was done explicitly because GNU CVS has inconsistencies or ambiguous behaviour. Some things have also been left out or modified to enhance the overall security of the system.

Among other things, support for the pserver connection mechanism has been dropped because of security issues with the authentication mechanism.