[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

C.9 The CVSROOT/config configuration file

Usually, the `config' file is found at `$CVSROOT/CVSROOT/config', but this may be overridden on the pserver and server command lines (see section server & pserver--Act as a server for a client on stdin/stdout).

The administrative file `config' contains various miscellaneous settings which affect the behavior of CVS. The syntax is slightly different from the other administrative files.

Leading white space on any line is ignored, though the syntax is very strict and will reject spaces and tabs almost anywhere else.

Empty lines, lines containing nothing but white space, and lines which start with `#' (discounting any leading white space) are ignored.

Other lines consist of the optional leading white space, a keyword, `=', and a value. Please note again that this syntax is very strict. Extraneous spaces or tabs, other than the leading white space, are not permitted on these lines.

As of CVS 1.12.13, lines of the form `[CVSROOT]' mark the subsequent section of the config file as applying only to certain repositories. Multiple `[CVSROOT]' lines without intervening `KEYWORD=VALUE' pairs cause processing to fall through, processing subsequent keywords for any root in the list. Finally, keywords and values which appear before any `[CVSROOT]' lines are defaults, and may to apply to any repository. For example, consider the following file:

# Defaults





  # Override logged commands for teams 3 & 4.

This example file sets up separate lock directories for each project, as well as a default set of logged commands overridden for the example's team 3 & team 4. This syntax could be useful, for instance, if you wished to share a single config file, for instance `/etc/cvs.conf', among several repositories.

Currently defined keywords are:


Request that CVS look for its history information in files matching pattern, which is a standard UNIX file glob. If pattern matches multiple files, all will be searched in lexicographically sorted order. See section history--Show status of files and users, and The history file, for more.

If no value is supplied for this option, it defaults to `$CVSROOT/CVSROOT/history'.


Control where CVS logs its history. If the file does not exist, CVS will attempt to create it. Format strings, as available to the GNU C strftime function and often the UNIX date command, and the string $CVSROOT will be substituted in this path. For example, consider the line:


This line would cause CVS to attempt to create its history file in a subdirectory (`history') of the configuration directory (`CVSROOT') with a name equal to the current date representation in the ISO8601 format (for example, on May 11, 2005, CVS would attempt to log its history under the repository root directory in a file named `CVSROOT/history/2005-05-11'). See section history--Show status of files and users, and The history file, for more.

If no value is supplied for this option, it defaults to `$CVSROOT/CVSROOT/history'.


Specify whether cvs import should always behave as if the `-X' flag was specified on the command line. value may be either `yes' or `no'. If set to `yes', all uses of cvs import on the repository will behave as if the `-X' flag was set. The default value is `no'.


Specify `i' followed by a list of keywords to be expanded (for example, `KeywordExpand=iMYCVS,Name,Date'), or `e' followed by a list of keywords not to be expanded (for example, `KeywordExpand=eCVSHeader'). For more on keyword expansion, see Configuring Keyword Expansion.


Specify a local alias for a standard keyword. For example, `LocalKeyword=MYCVS=CVSHeader'. For more on local keywords, see Keyword substitution.


Put CVS lock files in directory rather than directly in the repository. This is useful if you want to let users read from the repository while giving them write access only to directory, not to the repository. It can also be used to put the locks on a very fast in-memory file system to speed up locking and unlocking the repository. You need to create directory, but CVS will create subdirectories of directory as it needs them. For information on CVS locks, see Several developers simultaneously attempting to run CVS.

Before enabling the LockDir option, make sure that you have tracked down and removed any copies of CVS 1.9 or older. Such versions neither support LockDir, nor will give an error indicating that they don't support it. The result, if this is allowed to happen, is that some CVS users will put the locks one place, and others will put them another place, and therefore the repository could become corrupted. CVS 1.10 does not support LockDir but it will print a warning if run on a repository with LockDir enabled.


Control what is logged to the `CVSROOT/history' file (see section history--Show status of files and users). Default of `TOEFWUPCGMARX' (or simply `all') will log all transactions. Any subset of the default is legal. (For example, to only log transactions that modify the `*,v' files, use `LogHistory=TMAR'.) To disable history logging completely, use `LogHistory='.


Set to some length, in bytes, where a trailing `k', `M', `G', or `T' causes the preceding nubmer to be interpreted as kilobytes, megabytes, gigabytes, or terrabytes, respectively, will cause $Log$ keywords (see section Keyword substitution), with more than length bytes preceding it on a line to be ignored (or to fall back on the comment leader set in the RCS archive file - see UseArchiveCommentLeader below). Defaults to 20 bytes to allow checkouts to proceed normally when they include binary files containing $Log$ keywords and which users have neglected to mark as binary.


Restricts the level of compression used by the CVS server to a value between 0 and 9. values 1 through 9 are the same ZLIB compression levels accepted by the `-z' option (see section Global options), and 0 means no compression. When one or both of these keys are set and a client requests a level outside the specified range, the server will simply use the closest permissable level. Clients will continue compressing at the level requested by the user.

The exception is when level 0 (no compression) is not available and the client fails to request any compression. The CVS server will then exit with an error message when it becomes apparent that the client is not going to request compression. This will not happen with clients version 1.12.13 and later since these client versions allow the server to notify them that they must request some level of compression.


When specified, and the repository specified by CVSROOT is not the one currently being accessed, then the server will turn itself into a transparent proxy to CVSROOT for write requests. The hostname configured as part of CVSROOT must resolve to the same string returned by the uname command on the primary server for this to work. Host name resolution is performed via some combination of named, a broken out line from `/etc/hosts', and the Network Information Service (NIS or YP), depending on the configuration of the particular system.

Only the `:ext:' method is currently supported for primaries (actually, `:fork:' is supported as well, but only for testing - if you find another use for accessing a primary via the `:fork:' method, please send a note to bug-cvs@nongnu.org about it). See Distributing load across several CVS servers for more on configuring and using write proxies.


For CVS 1.9.12 through 1.9.18, this setting told CVS to look for RCS programs in the bindir directory. Current versions of CVS do not run RCS programs; for compatibility this setting is accepted, but it does nothing.


Modify the `commit' command such that CVS will reread the log message after running the program specified by `verifymsg'. value may be one of `yes' or `always', indicating that the log message should always be reread; `no' or `never', indicating that it should never be reread; or value may be `stat', indicating that the file should be checked with the file system `stat()' function to see if it has changed (see warning below) before rereading. The default value is `always'.

The `stat' mode can cause CVS to pause for up to one extra second per directory committed. This can be less IO and CPU intensive but is not recommended for use with large repositories

See section Verifying log messages, for more information on how verifymsg may be used.


If value is `yes', then pserver should check for users in the system's user database if not found in `CVSROOT/passwd'. If it is `no', then all pserver users must exist in `CVSROOT/passwd'. The default is `yes'. For more on pserver, see Direct connection with password authentication.


Specify path as the directory to create temporary files in. See section Global options, for more on setting the path to the temporary directory. This option first appeared with CVS release 1.12.13.


Modify the `checkout' command to create a `CVS' directory at the top level of the new working directory, in addition to `CVS' directories created within checked-out directories. The default value is `no'.

This option is useful if you find yourself performing many commands at the top level of your working directory, rather than in one of the checked out subdirectories. The `CVS' directory created there will mean you don't have to specify CVSROOT for each command. It also provides a place for the `CVS/Template' file (see section How data is stored in the working directory).


Set to true, if the text preceding a $Log$ keyword is found to exceed MaxCommentLeaderLength (above) bytes, then the comment leader set in the RCS archive file (see section admin--Administration), if any, will be used instead. If there is no comment leader set in the archive file or value is set to `false', then the keyword will not be expanded (see section Keyword List). To force the comment leader in the RCS archive file to be used exclusively (and $Log$ expansion skipped in files where the comment leader has not been set in the archive file), set value and set MaxCommentLeaderLength to 0.


Specify whether CVS should support the new or old command line template model for the commit support files (see section The commit support files). This configuration variable began life in deprecation and is only here in order to give people time to update legacy repositories to use the new format string syntax before support for the old syntax is removed. For information on updating your repository to support the new model, please see Updating legacy repositories to stop using deprecated command line template formats.

Note that new repositories (created with the cvs init command) will have this value set to `yes', but the default value is `no'.


Control what options will be allowed with the cvs admin command (see section admin--Administration) for users not in the cvsadmin group. The value string is a list of single character options which should be allowed. If a user who is not a member of the cvsadmin group tries to execute any cvs admin option which is not listed they will will receive an error message reporting that the option is restricted.

If no cvsadmin group exists on the server, CVS will ignore the UserAdminOptions keyword (see section admin--Administration).

When not specified, UserAdminOptions defaults to `k'. In other words, it defaults to allowing users outside of the cvsadmin group to use the cvs admin command only to change the default keyword expansion mode for files.

As an example, to restrict users not in the cvsadmin group to using cvs admin to change the default keyword substitution mode, lock revisions, unlock revisions, and replace the log message, use `UserAdminOptions=klum'.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on September, 14 2007 using texi2html 1.76.