在一個多人協作的環境中,每個人提交代碼后,應該能通知其他人這個變化,郵件是一個最常見的方法。
由于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=%1set REV=%2
D:\svnroot\commit-email.pl "%REPOS%" "%REV%" rocksun@127.0.0.1--from daijun@gmail.com
好了,在project1的工作拷貝里提交吧,然后看看你剛才配置的郵件客戶端,有沒有受到這次變更的郵件。