下一个: , 上一个: commitinfo, 上层: Trigger Scripts


C.3.5 核对日志消息

一旦你键入日志消息,你可以评估该消息以检测指定的内容,如 bug ID。使用 verifymsg 文件指定一个程序可以用来校验日志消息。这个程序可以是一个简单 的脚本,检验输入的消息是否包含所需的字段。

verifymsg 文件常与指定日志消息模板的 rcsinfo 文件一起使用 (参阅 rcsinfo)。

verifymsg 文件有一个标准的脚本 hook 形式(参阅 Trigger Scripts),每一行 是一个正则表达式和所执行的命令。它只支持 DEFAULT 关键字。

除了通用格式化字符串以外(参阅 syntax),verifymsg 还支持:

l
包含日志消息被校验文件的完整路径

当前,如果没有指定格式化字符串,默认的 ` %l' 字符串将在替换发生前追加到 命令行模板,但该特性已废弃。保留的目的只是为了新 cvs 应用程序与旧仓库 保持兼容。更新的一些信息,参阅 Updating Commit Files

有一件事要注意,`ALL' 关键字不被支持。如果匹配了不止一行,第一个将被使用。 这可以用来在一个目录中指定默认的校验脚本,然后覆盖其他子目录。

如果校验脚本返回非零值,提交将中止。

在默认配置下,CVS 允许校验脚本修改日志消息。这通过 RereadLogAfterVerify CVSROOT/config 选项来控制。

当 `RereadLogAfterVerify=always' 或 `RereadLogAfterVerify=stat' 时, 日志消息将总是在校验脚本后重读或只在日志消息文件状态改变时重读。

参阅 config, 了解更多 CVSROOT/config 选项。

对于 verifymsg 脚本,直接与用户在客户机/服务器模式下交互不是个好主意。 对 pserver 方式,没有协议可以支持 verifymsg 和客户机之间的通讯。 对 extserver 方式,CVS 协议消息同一通道中的字符,可能让 CVS 造成混乱。参阅 Remote repositories,了解更多的客户机/服务器设置。另外, verifymsg 脚本运行的时候,CVS 服务器会在适当的位置加锁。如果用户在这里 退出,其他的用户将定在等待访问仓库状态。

如果你发现自己用的 rcs 模板需要修改删除空元素或填充默认值,该选项比较有用。 如果 rcs 模板在仓库里面更改并且 CVS/Template 没有更新,它也有用,但可以让运行 verifymsg 的校验脚本适应新的格式。

一个更新的例子是将所有的 'BugId:' 改为 'DefectId:' (如果 rcs 模板最近更改了 但仍有存在于旧版本的 CVS/Template 文件缓存中的检出用户树)。

另一个更新的例子,可以在确认允许之后删除日志消息中包含 'BugID: none' 的行。