CVS与邮件服务器结合在多人开发项目中的应用 |
|---|
| 作者:journeyman 2005-02-01 11:20:28 来自:Linuxforum.net |
|
不知这帖发这里合不合适,不过确实是我在实际做项目时的一点经验。 需求是这样的,一个项目由3-5个人进行开发,源代码用一台服务器用CVS pserver进行管 理,当某个开发者提交了某个修改之后,自动以邮件的形式通知其它的开发者。 CVS服务器可以设置一些触发器,设置好触发器之后可以实现这样的功能。假设开发参与开 发者同属 sim123 这个用户组。 1. 邮件服务器的设置 邮件服务器采用 postfix ,在alias文件里加上如下的语句: sim123: user1,user2,user3 这样发往sim123的邮件可以自动的发往user1,user2,user3,为下面的设置提供了方便。 2. CVS服务器的触发器设置: 与此项目相关的用CVS管理的程序以及文档在$CVSROOT/sim123/,关于权限的设置一些文章 及书籍已经讲的很清楚,在此不说述,下面说一下触发器的设置。 在CVS仓库中的CVSROOT目录下有一些loginfo、taginfo之类的文件就是用来设置触发器的 ,这些触发器是对一些信息用正则表达式进行匹配,如果匹配成功则进行相关的处理, Apache的CVS服务器是用一些perl的程序来完成相关的处理的,不是很复杂的处理可以只用 一些命令来完成。 loginfo 是当 "cvs commit" 的log信息发送出时进行处理,它对发生改变的目录(相对于 $CVSROOT)进行匹配,如果匹配成功则将 "cvs commit" 命令的log信息发送到后续处理的 标准输入。可以用 % 指定一些特殊字串,要引用多个可以用{}括起来,但我在 使用过程中发现一个匹配只能引用一次。 其中 %s 表示文件名,%V 表示旧版本号,%v表示新版本号。如果被提交的文件为main.c的 1.2 -> 1.3 ,%{sVv} 就表示 main.c,1.2,1.3。 这个文件中可能会有一些注释,DEFAULT行是默认的处理,ALL行表示所有的处理。 在loginfo中加入下列内容: ^sim123* (echo ""; id; date; cat) | Mail -s %{sVv} sim123@localhost 这句话的意思是说当有向$CVSROOT/sim123下提交修改发生时,将修改的日志发往sim123@localhost,邮件的标题为发生改变的文件名、旧版本号和新版本号。这台服务器上再安装好pop3 服务,项目的程序以及文档的每一步修改对所有参与开发的人员便是透明的了。 (编辑:nuthead)
|