在一个多人协作的环境中,每个人提交代码后,应该能通知其他人这个变化,邮件是一个最常见的方法。

由于windows下不像linux一样都随机配备了sendmail等发送邮件的工具,所以我们需要在windows上选择一种smtp服务器,这里我使用了James,一个Java的开源的开源项目,实现了完整的邮件系统。

 本教程是 Windows下Subversion配置管理员指南系列教程的一部分,各个教程采用相同的目录结构和路径,有助于大家阅读。

版本库根目录: d:\svnroot ,其中有project1和project2两个版本库。
Subversion安装目录: d:\subversion

 

1,下载安装

a. 下载安装JDK

因为James是Java程序,首先你的系统必须有Java运行环境,我们可以从Sun的官方网站下载,地址是http://java.sun.com/javase/downloads/index.jsp。下载直接按照默认安装即可,我选择安装的位置是D:\jdk1.5.0_09,教程后面将会使用这个路径。

b. 下载安装James

James的官方网站是http://james.apache.org/,我们可以在http://java.sun.com/javase/downloads/index.jsp下载James的服务器版本,目前的最新版本是http://apache.justdn.org/james/server/binaries/james-2.3.0.zip

下载后直接解压缩就行了,然后打开james-2.3.0\bin\run.bat,在@echo off后面增加下面的代码:
    set JAVA_HOME=D:\jdk1.5.0_09
然后直接运行一下run.bat,就会提示启动了邮件服务器,其中我们使用的就是smtp服务,这说明James安装成功。

c. 下载安装perl

我们这个教程会借用subversion官方网站提供的发送邮件脚本,是使用perl编写,所以我们需要下载perl的运行环境。http://www.activestate.com/store/productdetail.aspx?prdGuid=81fbce82-6bd5-49bc-a915-08d58c2648ca下的http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.819-MSWin32-x86-267479.msi。perl的安装位置与后面的教程无关,可以随意安装。

d. 下载commit-email.pl.in

官方网站的http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/下提供了一些有用的钩子脚本下载,我们下载http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-email.pl.in


2,配置验证James

在上一小节运行了run.bat后,可以看到如下的提示:

Using PHOENIX_HOME:   D:\tools\james-2.3.0
Using PHOENIX_TMPDIR: D:\tools\james-2.3.0\temp
Using JAVA_HOME:      D:\jdk1.5.0_09
Phoenix 4.2
James Mail Server 2.3.0
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled

它告诉我们可以使用启动正常(不要关闭窗口),并且可以使用telnet进行管理,为此,我们在一个新命令行窗口中运行:

telnet 127.0.0.14555

注意:这里127.0.0.1代表了我的本机地址,如果是在局域网中,可能这里是运行James服务器的ip地址。

然后出现输入用户名和密码的提示,用户名和密码都输入root即可,提示登陆成功后,直接输入下面的命令,就可以添加一个帐户:

adduser rocksun rocksun

完成这个操作后,我们就可以使用我们的邮件客户端(outlook, foxmail)验证我们的James服务器,我想配置都不是问题,smtp和pop3服务器都输入“127.0.0.1”或运行James服务器主机的IP即可,用户名和密码都是rocksun,设置smtp发送无需认证。

然后可以发送一个测试邮件,根据上面添加的用户信息,我们的邮件的目的地址是 rocksun@127.0.0.1

,发送后你在选择收邮件,就应该能得到自己发送的邮件,然后我们可以继续进行了。

3,编写钩子

剩下的工作就很简单了,将commit-email.pl.in重命名为commit-email.pl,存放在D:\svnroot\下,然后找到下面这一行:

my $svnlook = "@SVN_BINDIR@/svnlook";

修改为:

my $svnlook = "D:/Subversion/bin/svnlook.exe";

然后来到D:\svnroot\project1\hooks下,创建一个post-commit.bat文件,内容如下:

set REPOS=%1
set REV=%2
D:\svnroot\commit-email.pl "%REPOS%" "%REV%" rocksun@127.0.0.1--from daijun@gmail.com

好了,在project1的工作拷贝里提交吧,然后看看你刚才配置的邮件客户端,有没有受到这次变更的邮件。