我以前一直是用 Svnserve 做為 Subversion 服務(wù)器。這樣簡單易行,而且訪問速度也不錯。
但 Svnserve 做服務(wù)器有幾個不足之處:
1、權(quán)限管理太簡單,只能為整個倉庫設(shè)置訪問權(quán)限,不能為目錄設(shè)置訪問權(quán)限;
2、訪問用戶的密碼以明文形式保存在文本文件里面;
3、只能提供一個倉庫,如果要提供多個倉庫,就必須啟動多個 Svnserve 實例;
4、Svnserve.exe 必須借助第三方工具軟件(例如 FireDaemon)才能安裝為 Windows 系統(tǒng)服務(wù);
5、必須在防火墻上打開單獨的端口,而不能直接通過 HTTP 協(xié)議訪問。
而換成用 Apache2 作為 Subversion 的服務(wù)平臺,具有下列好處:
1、可以為每個倉庫、目錄設(shè)置訪問權(quán)限;
2、密碼采用 MD5 或者 Crypt 加密存儲,并可以利用其他驗證方式;
3、可以同時服務(wù)多個 Subversion 倉庫;
4、通過 HTTP 協(xié)議即可訪問倉庫,幾乎不會受到防火墻影響;
5、可以通過瀏覽器直接瀏覽、下載文件;
6、任何支持 WebDAV 的軟件都可以操作 Subversion 倉庫。
廢話不說了,安裝步驟如下:
第一步:安裝 Apache2
很遺憾,必須使用 Apache2,而不能是 Apache1 或者 IIS。如果你的系統(tǒng)正在使用 IIS 或者 Apache1,那么可以將 Apache2 綁定到其他端口,例如 8080。這只需要修改 httpd.conf 的 Listen 80 為 Listen 8080 (注意去掉該行前面的 # 注釋符號) 即可。
第二步:集成 Subversion 到 Apache2 中
修改 httpd.conf,加入下面兩行:
LoadModule dav_svn_module d:/svn-1.2.0-win32/bin/mod_dav_svn.so
LoadModule dav_svn_module d:/svn-1.2.0-win32/bin/mod_authz_svn.so
第三步:創(chuàng)建倉庫
在命令行窗口運行:
d:/svn-1.2.0-win32/bin/svnadmin create d:/svnrepo
然后繼續(xù)修改 httpd.conf,加入下面的內(nèi)容:
DAV svn
SVNPath d:/svnrepo
現(xiàn)在啟動 Apache2,通過瀏覽器訪問
http://127.0.0.1:8080/public/
應(yīng)該就可以看到如下畫面了。當然了,如果你的倉庫里面什么都沒有,就只能看到一個空目錄而已。

第四步:權(quán)限驗證
經(jīng)過前面三個步驟,我們建立了一個任何人都可以訪問并操作的 Subversion 倉庫。所以現(xiàn)在就是該為這個倉庫加上鎖的時候了。
修改 httpd.conf,找到剛剛輸入的 ,修改為如下內(nèi)容:
DAV svn AuthzSVNAccessFile "d:/svn-1.2.0-win32/conf/repo-access-file" Satisfy Any AuthType Basic
SVNPath d:/svnrepo
Require valid-user
AuthName "我的 Subversion 倉庫"
AuthUserFile "d:/svn-1.2.0-win32/conf/auth-file"
這里我們指定了兩個文件。repo-access-file 文件用于指定倉庫的訪問策略,auth-file 則保存用戶名和密碼。
repo-access-file 文件的內(nèi)容如下:
[/private]
[/]
dualface = rw
* = r
dualface = rw
這個文件里面,[/] 表示要為根目錄指定訪問策略,而 [/private] 則表示為 /private 目錄指定訪問策略。
[/] 后面的 dualface = rw 表示名為 dualface 的用戶在這個目錄及其子目錄中具有讀寫權(quán)限(r = 讀,w = 寫)。* = r 則表示任何用戶都具有只讀權(quán)限。[/private] 后面沒有 * = r,因此除了 dualface 以外的任何其他用戶都無法訪問這個目錄。
這里要注意的是,雖然我們?yōu)?/ 根目錄指定的訪問策略是允許任何人具有只讀權(quán)限,但 /private 目錄單獨的訪問策略具有更高的優(yōu)先級。
接下來,還要創(chuàng)建保存用戶名和密碼的 auth-file 文件。這個文件不能直接建立,需要使用 Apache2 的 htpasswd 程序來建立。使用格式如下:
htpasswd -cm d:/svn-1.2.0-win32/conf/auth-file dualface
-cm 參數(shù)表示創(chuàng)建文件,并添加用戶。而 dualface 則是要添加的用戶名。執(zhí)行命令后,htpasswd 會提示輸入兩次為用戶指定的密碼。

如果要添加更多用戶,將參數(shù) -cm 改為 -m 即可。最后重新啟動 Apache2,如果一切順利,我們的倉庫就完全建立好了!