下一个: , 上一个: 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= 关键字的这些特点实现的补丁并不被识别。