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