Previous: Variables, Up: Administrative files


C.9 The CVSROOT/config configuration file

The administrative file config contains various miscellaneous settings which affect the behavior of cvs. The syntax is slightly different from the other administrative files. Variables are not expanded. Lines which start with `#' are considered comments. Other lines consist of a keyword, `=', and a value. Note that this syntax is very strict. Extraneous spaces or tabs are not permitted.

Currently defined keywords are:

RCSBIN=bindir
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.


SystemAuth=value
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 Password authenticated.


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


KeywordExpand=value
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.


TopLevelAdmin=value
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 Working directory storage).


LockDir=directory
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 Concurrency.

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.


LogHistory=value
Control what is logged to the CVSROOT/history file (see history). Default of `TOEFWUPCGMAR' (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'.)


RereadLogAfterVerify=value
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'.

Note: 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 verifymsg, for more information on how verifymsg may be used.


UserAdminOptions=value
Control what options will be allowed with the cvs admin command (see admin) 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 admin).

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'.


UseNewInfoFmtStrings=value
Specify whether cvs should support the new or old command line template model for the commit support files (see commit 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 Commit Files.

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


ImportNewFilesToVendorBranchOnly=value
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'.


PrimaryServer=CVSROOT
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@gnu.org about it). See Write proxies for more on configuring and using write proxies.


MaxCommentLeaderLength=length
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 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.


UseArchiveCommentLeader=value
Set to true, if the text preceding a $Log$ keyword is found to exceed MaxCommentLeaderLength bytes, then the comment leader set in the RCS archive file (see admin), 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 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.