下一个: , 上一个: Setting a watch, 上层: Watches


10.6.2 告诉 CVS 提示你

你可以告诉 cvs 你想得到关于在一个文件上所进行动作的通知。虽然可以不用 cvs watch on 命令,但如果要提醒开发人员使用 cvs edit 命令, 还是应该用 cvs watch on 命令。

— Command: cvs watch add [-lR] [-a action]... [files]...

将当前用户加入到 files 完成的通知列表。

-a 选项指定通知给用户的 cvs 事件类型。action 类型可以是:

edit
另一个用户对被监视的文件使用 cvs edit 命令(见下文)。
提交
另一个用户提交了 files 的修改。
unedit
另一个用户放弃编辑文件(而不是提交修改)。有以下几种方式可以做此事:
  • 对该文件使用 cvs unedit 命令(见下文)
  • 对该文件的父目录使用 cvs release 命令(参阅 release)(或者递归到该文件 的某层目录)
  • 删除该文件,然后用 cvs update 命令重建

all
上面的所有事件。
none
在上面没有。(对 cvs edit 命令很有用,见下文。)

-a 选项可以出现多次,也可以没有。如果省略,默认使用 all

处理 files 和选项的方法和 cvs watch on 相同。

— Command: cvs watch remove [-lR] [-a action]... [files]...

删除由 cvs watch add 命令确立的通知;参数相同。如果使用 -a 选项, 只删除指定的动作的监视。

一旦通知的条件成立,cvs 会调用 notify 管理文件。编辑 notify 文件的方法与其他管理文件相同 (参阅 Intro administrative files)。该文件也符合 管理文件的语法习惯(参阅 syntax),文件中每一行为一个正则表达式加一个要执行的 命令。命令中包含 `%s' 用来替换所要通知的用户;其余的是通知需要使用的附加 信息,它们作为命令的标准输入。标准用法是将放在 notify 文件的一行中:

     ALL mail %s -s "CVS notification"

这条命令使用电子邮件通知用户。

注意,如果你直接使用这种方法,用户在服务器机器上接收通知。当然,可以写一个 notify 脚本将通知指向其他的地方,但为了使用方便,cvs 允许给每个用户 指定一个相关的地址。做法是在 CVSROOT 目录下创建一个 users 文件, 每行的格式为 user:value。这样 cvs 不是把被通知用户名传递给 notify,而是传递 value 中的值(一般是其它机器上的 email 地址)。

cvs 不会对你自己做的修改进行通知。现在的检测是基于触发事件的用户名与被通知的 用户名。通常,实际上监视特性只跟踪每个用户的一个编辑。或许分别监视每个目录会更有用, 所以这方面将来也许改变。