下一个: , 上一个: Substitution modes, 上层: Keyword substitution


12.5 配置关键字扩展

在一个包含第三方软件的销售商分支的仓库中,配置 CVS 使用本地的关键字代换 $Id$ 或 $Header$ 很有用处。在一些真正的 项目中有实例:$Xorg$、$XFree86$、 $FreeBSD$、$NetBSD$、$OpenBSD$, 甚至 $dotat$。它的优点在于可以i在文件中包含本地的版本信息 而不破坏上游版本信息(它们可能使用不同的 local keyword 或标准关键字)。在这些 场合中,希望能只使用配置的本地关键字而停用其它所有的关键字展开。

文件 CVSROOT/config 中的 KeywordExpand 选项可用于明确指定排除或 包含某个关键字,或关键字列表。该列表可包含配置的 LocalKeyword

KeywordExpand 选项后跟随 =,其下一个字符可能是 i 来表示 开始一个包含列表或是一个 e 来表示开始一个排除列表。如果以下的行被加到 CVSROOT/config 文件中:

             # Add a "MyBSD" keyword and restrict keyword
             # expansion
             LocalKeyword=MyBSD=CVSHeader
             KeywordExpand=iMyBSD

则只有 $MyBSD$ 会被扩展。可能用列表。此例子:

             # Add a "MyBSD" keyword and restrict keyword
             # expansion to the MyBSD, Name and Date keywords.
             LocalKeyword=MyBSD=CVSHeader
             KeywordExpand=iMyBSD,Name,Date

将允许 $MyBSD$、$Name$ 和 $Date$ 被扩展。

也可以用以下的办法配置排除列表:

             # Do not expand the non-RCS keyword CVSHeader
             KeywordExpand=eCVSHeader

这让 cvs 忽略新近引入的 $CVSHeader$ 关键字而保留其他的。 排除的项还可以包括 RCS 的关键字列表,但会令需要 RCS 关键字扩展的用户费解,所以 要恰当设置以该法配置的仓库的用户期望。

如果要不扩展任何 RCS 关键字,并且不用任何地方的 -ko 标志,管理员可以在 CVSROOT/config 中添加下面这行禁用全部关键字扩展:

     	# Do not expand any RCS keywords
     	KeywordExpand=i

这会使希望使用 $Id$ 这样的 RCS 关键字扩展的用户迷惑,所以 要恰当设置如此配置的仓库的用户期望。

有一点要注意,针对 KeywordExpandLocalKeyword 特性的补丁已经 存在很长时间了。但使用 tag=tagexpand= 关键字的这些特点实现的 补丁并不被识别。