在一個(gè)多人協(xié)作的環(huán)境中,每個(gè)人提交代碼后,應(yīng)該能通知其他人這個(gè)變化,郵件是一個(gè)最常見的方法。
由于windows下不像linux一樣都隨機(jī)配備了sendmail等發(fā)送郵件的工具,所以我們需要在windows上選擇一種smtp服務(wù)器,這里我使用了James,一個(gè)Java的開源的開源項(xiàng)目,實(shí)現(xiàn)了完整的郵件系統(tǒng)。
?本教程是 Windows下Subversion配置管理員指南系列教程的一部分,各個(gè)教程采用相同的目錄結(jié)構(gòu)和路徑,有助于大家閱讀。
版本庫(kù)根目錄: d:\svnroot ,其中有project1和project2兩個(gè)版本庫(kù)。
Subversion安裝目錄: d:\subversion
?
1,下載安裝
a. 下載安裝JDK
因?yàn)镴ames是Java程序,首先你的系統(tǒng)必須有Java運(yùn)行環(huán)境,我們可以從Sun的官方網(wǎng)站下載,地址是http://java.sun.com/javase/downloads/index.jsp。下載直接按照默認(rèn)安裝即可,我選擇安裝的位置是D:\jdk1.5.0_09,教程后面將會(huì)使用這個(gè)路徑。
b. 下載安裝James
James的官方網(wǎng)站是http://james.apache.org/,我們可以在http://java.sun.com/javase/downloads/index.jsp下載James的服務(wù)器版本,目前的最新版本是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
然后直接運(yùn)行一下run.bat,就會(huì)提示啟動(dòng)了郵件服務(wù)器,其中我們使用的就是smtp服務(wù),這說(shuō)明James安裝成功。
c. 下載安裝perl
我們這個(gè)教程會(huì)借用subversion官方網(wǎng)站提供的發(fā)送郵件腳本,是使用perl編寫,所以我們需要下載perl的運(yùn)行環(huán)境。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的安裝位置與后面的教程無(wú)關(guān),可以隨意安裝。
d. 下載commit-email.pl.in
官方網(wǎng)站的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,配置驗(yàn)證James
在上一小節(jié)運(yùn)行了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
它告訴我們可以使用啟動(dòng)正常(不要關(guān)閉窗口),并且可以使用telnet進(jìn)行管理,為此,我們?cè)谝粋€(gè)新命令行窗口中運(yùn)行:
telnet 127.0.0.14555
注意:這里127.0.0.1代表了我的本機(jī)地址,如果是在局域網(wǎng)中,可能這里是運(yùn)行James服務(wù)器的ip地址。
然后出現(xiàn)輸入用戶名和密碼的提示,用戶名和密碼都輸入root即可,提示登陸成功后,直接輸入下面的命令,就可以添加一個(gè)帳戶:
adduser rocksun rocksun
完成這個(gè)操作后,我們就可以使用我們的郵件客戶端(outlook, foxmail)驗(yàn)證我們的James服務(wù)器,我想配置都不是問(wèn)題,smtp和pop3服務(wù)器都輸入“127.0.0.1”或運(yùn)行James服務(wù)器主機(jī)的IP即可,用戶名和密碼都是rocksun,設(shè)置smtp發(fā)送無(wú)需認(rèn)證。
然后可以發(fā)送一個(gè)測(cè)試郵件,根據(jù)上面添加的用戶信息,我們的郵件的目的地址是
rocksun@127.0.0.1
,發(fā)送后你在選擇收郵件,就應(yīng)該能得到自己發(fā)送的郵件,然后我們可以繼續(xù)進(jìn)行了。
3,編寫鉤子
剩下的工作就很簡(jiǎn)單了,將commit-email.pl.in重命名為commit-email.pl,存放在D:\svnroot\下,然后找到下面這一行:
my $svnlook = "@SVN_BINDIR@/svnlook";
修改為:
my $svnlook = "D:/Subversion/bin/svnlook.exe";
然后來(lái)到D:\svnroot\project1\hooks下,創(chuàng)建一個(gè)post-commit.bat文件,內(nèi)容如下:
set REPOS=%1
set REV=%2
D:\svnroot\commit-email.pl "%REPOS%" "%REV%"
rocksun@127.0.0.1--from
daijun@gmail.com好了,在project1的工作拷貝里提交吧,然后看看你剛才配置的郵件客戶端,有沒(méi)有受到這次變更的郵件。