<<返回在线教程

上一个: Variables, 上层: Administrative files


C.9 CVSROOT/config 配置文件

通常,config 文件处于 $CVSROOT/CVSROOT/config,但在 pserverserver 命令行里面可以覆盖 (参阅 server & pserver)。

config 管理文件包含影响 cvs 行为的各种设定。其语法与其他的管理文件 略有不同。

行前面的空白将被忽略,因为语法要求严格,其他的空格和制表符都会拒绝。

空行,只包含空白的行,以及 `#' 开头的行(不计前面的空白)将忽略。

其他的行以可选的空格,关键字,`=' 和值组成。要留意语法要求很严格。 额外的空格与制表符,非前置的空格,都不允许出现在这些行里。

从 CVS 1.12.13 起,`[CVSROOT]' 形式的行标记配置文件后续部分只用于特定的仓库。 多个 `[CVSROOT]' 行不会干涉 `KEYWORD=VALUE' 对, 造成处理失败,处理列表中任何 root 的后续关键字。最后,在 `[CVSROOT]' 行 之前的关键字和值是默认值,可适用于任何仓库。例如,下面的文件:

     # Defaults
     LogHistory=TMAR
     
     [/cvsroots/team1]
       LockDir=/locks/team1
     
     [/cvsroots/team2]
       LockDir=/locks/team2
     
     [/cvsroots/team3]
       LockDir=/locks/team3
     
     [/cvsroots/team4]
       LockDir=/locks/team4
     
     [/cvsroots/team3]
     [/cvsroots/team4]
       # Override logged commands for teams 3 & 4.
       LogHistory=all

这个示例文件为每个项目建立各自 lock 的目录,以及为 team 3 和 team 4 设置的日志命令。 这种语法对于多个仓库共享同一个配置文件,如 /etc/cvs.conf,很有帮助。

现在定义的关键字有:

HistorySearchPath=pattern
请求 cvs 在匹配 pattern 的文件中寻找它的历史信息,这是标准的 UNIX 文件全局变量。 如果 pattern 匹配到多个文件,所有的文件安装词典的顺序搜索。 参阅 history, 和 history file 了解更多信息。

如果没有这个选项的值,默认使用 $CVSROOT/CVSROOT/history


HistoryLogPath=path
控制 cvs 在哪里记录它的历史。如果文件不存在,cvs 将会创建一个。 路径中的格式化字符串,符合 GNU C strftime 函数和 UNIX 的日期命令, 以及 $CVSROOT 字串将被替换。例如,下面行中:
          HistoryLogPath=$CVSROOT/CVSROOT/history/%Y-%m-%d
     

该行将使 cvs 创建它的历史文件到配置文件目 (CVSROOT) 的子目录 (history), 文件名为 ISO8601 格式的当前日期(例如,2005 年 5 月 11 日,cvs 创建的日志文件为 CVSROOT/history/2005-05-11)。 参阅 history, 和 history file 了解更多信息。

如果没有这个选项的值,默认使用 $CVSROOT/CVSROOT/history$CVSROOT/CVSROOT/history.


ImportNewFilesToVendorBranchOnly=value
指定 cvs import 是否总是执行如命令行上使用 `-X' 标识的行为。 value 可以是 `yes' 或 `no'。如果设为 `yes',所有的用户执行 cvs import 的结果,就像 `-X' 已经设置。默认值为 `no'。


KeywordExpand=value
指定 `i' 开始的可扩展的关键字列表(例如,`KeywordExpand=iMYCVS,Name,Date'), 或者 `e' 开始的不可扩展的关键字列表(例如,`KeywordExpand=eCVSHeader')。 更多关键字扩展的信息,参阅 Configuring keyword expansion


LocalKeyword=value
指定标准关键字的本地别名。例如,`LocalKeyword=MYCVS=CVSHeader'。 更多本地关键字的信息,参阅 Keyword substitution


LockDir=directory
cvs lock 文件置于 directory 目录,而不是仓库中的目录。这对于 需要给用户仓库访问权限,可以只给它们 directory 的写权限,而不是仓库。 还可以将 lock 放到快速的使用内存的文件系统,以加速仓库的加锁和解锁。 你需要自己创建 directorycvs 将在需要的时候创建 directory 下的子目录。关于 cvs 锁,参阅 Concurrency

在启用 LockDir 选项之前,确保你查找并删除了 cvs 1.9 或早期版本。这些版本 不支持 LockDir,并不会给出不支持的错误信息。结果将会是一些 cvs 用户将锁 放在这个地方,其他用户放在另外的地方,仓库自然就被破坏了。cvs 1.10 仍不支持 LockDir,但是假如运行的仓库启用了 LockDir,它会打印一个警告。


LogHistory=value
控制哪些将记录到 CVSROOT/history 文件 (参阅 history)。 默认是 `TOEFWUPCGMAR' (或简写 `all'。任何默认子集都合法。 (例如,只记录对 *,v 文件的修改,使用 `LogHistory=TMAR'。)


MaxCommentLeaderLength=length
设置一些尺寸,以字节,或者 `k', `M', `G', `T' 让前面的数字 分别解释为千字节,兆字节,亿字节,或 T 字节,使 $Log$ 关键字(参阅 Keyword substitution),在一行里大于指定 length 字节时被忽略 (或者退到 RCS 档案文件里设置的 comment leader - 参见下面的 UseArchiveCommentLeader)。默认在检出时只处理 20 字节,是防止用户疏忽, 没有将二进制文件标明时,二进制文件里面含有 $Log$ 关键字的情况。


MinCompressionLevel=value
MaxCompressionLevel=value
限制 cvs 服务器使用的压缩等级,value 介于 0 与 9 之间。value 的 1 到 9 与 zlib 使用的 `-z' 选项指定的压缩等级相同,0 则意味着不压缩。 当一个或两个关键字都设置,客户端请求的级别超出了指定范围,服务器将使用最接近的等级。 客户端将继续使用用户指定的等级。

例外的情况是,当等级 0 (不压缩) 不可用,客户端请求的任何压缩将失败。当客户端明显地不使用 压缩时,cvs 服务器将退出并提示错误信息。这种情况在客户端为 1.12.13 及以后的版本 中不会出现,因为这些版本的客户端将允许服务器提示必须使用压缩等级。


PrimaryServer=CVSROOT
指定后,如果 CVSROOT 指定的仓库与当前访问的不同,那么服务器转换为 CVSROOT 的透明代理用于写请求。作为 CVSROOT 一部分的 hostname, 必须与当前工作中的主服务器 uname 命令返回的字串相同。域名解析是通过 组合的 named/etc/hosts 的行,以及 Network Information Service (NIS 或 YP),这取决于系统的配置。

当前只支持 `:ext:' 方式(实际上,`:fork:' 也支持,但只用于测试 - 如果你 发现通过 `:fork:' 方式有其他的用途,请发一个提示到 bug-cvs@gnu.org)。 参阅 Write proxies 了解有关配置和使用写代理的情况。


RCSBIN=bindir
cvs 1.9.12 到 1.9.18 之间的版本,该设置告诉 cvs 用于在 bindir 目录里面搜索 rcs 程序。当前的 cvs 不再使用 rcs 程序;为了兼容 该设置仍被保留,但不起任何作用。


RereadLogAfterVerify=value
修改 `commit' 命令,使得 CVS 在执行完 verifymsg 里面指定的程序之后, 重读日志消息。当 VALUE 是 `yes' 或 `always' 时,指明总是去重读日志消息; `no' 或 `never',指明不会去重读; 或者 value 是 `stat', 指明文件应该在重读之前通过文件系统 `stat()' 函数检测,判断是否已经修改 (参阅下面警告)。默认值为 ``always'。

注意: `stat' 模式可能会造成 CVS 在提交每个目录时暂停数秒。这也可能 不消耗多少 IO 和 CPU,但还是不建议在大型的仓库里面使用

参阅 verifymsg, 以了解更多关于如何使用 verifymsg 的信息。


SystemAuth=value
如果 value 是 `yes',pserver 将在 CVSROOT/passwd 没有对应用户 的情况下检查系统用户。如果设为 `no',那么所有的 pserver 用户都必须在 CVSROOT/passwd 里面存在。默认使用 `yes'。更多 pserver 的信息, 参阅 Password authenticated


TmpDir=path
指定 path 为建立临时文件使用的目录。参阅 Global options, 了解临时目录设置的详细信息。此选项首次出现于 cvs 1.12.13 版。


TopLevelAdmin=value
修改 `checkout' 命令,除了在检出目录里面,还在新工作目录顶级创建 `CVS' 目录。默认值为 `no'。

如果你要在工作目录的顶级,而不是检出的子目录执行许多命令,该选项就很有用。 在那里创建 CVS 目录意味着你不用为每个命令指定 CVSROOT。它还为 CVS/Template 文件提供了一个场所 (参阅 Working directory storage)。


UseArchiveCommentLeader=value
设为 true,如果前面文本里有 $Log$ 关键字,超过 MaxCommentLeaderLength 设置的字节,如果有,会被替代。如果在档案文件里面 没有设置 comment leader,或者 value 设为 `false',关键字将不会被替换 (参阅 Keyword list)。为了强制使用 RCS 档案文件里面的 comment leader(并且档案 文件里面没有设置 comment leader,文件里面的 $Log$ 扩展会跳过),设置 valueMaxCommentLeaderLength 设为 0


UseNewInfoFmtStrings=value
指定 cvs 在提交支持文件(参阅 commit files)时,是支持新的还是旧的命令行 模板模型。此配置变量准备放弃,现在只是给用户一定时间来更新旧仓库,在删除旧语法 之前可以使用新的格式化字符串。关于更新仓库以支持新模型, 请参考 Updating Commit Files

注意,新的仓库(使用 cvs init 命令创建)将此值设为 `yes', 但默认值是 `no'。


UserAdminOptions=value
控制哪些 cvs admin 命令(参阅 admin))选项可以被不属于 cvsadmin 组里面的用户使用。value 字符串是允许的选项列表。不属于 cvsadmin 组的用户,如果执行 cvs admin 的选项没有列在其中,将获得选项受限的错误消息。

如果服务器上没有 cvsadmin 组存在,cvs 将忽略 UserAdminOptions 关键字 (参阅 admin)。

没有指定时,UserAdminOptions 默认为 `k'。也就是说,默认只允许 cvsadmin 组以外的用户通过 cvs admin admin' 命令修改文件的关键字 扩展模式。

例如,让 cvsadmin 组以外的用户可以使用 cvs admin 命令修改默认的 关键字替换模式,锁住修订版,开锁修订版和替换日志消息, 设定为 `UserAdminOptions=klum'。