svn管理員高級操作指南:多項(xiàng)目和強(qiáng)制注釋
關(guān)于svn和git的對比,本文不展開討論,基于svn的版本控制,服務(wù)器管理員新建一個svn項(xiàng)目,設(shè)置賬號密碼等權(quán)限,屬于初級操作,網(wǎng)上也有很多資料可以查詢,這里重點(diǎn)解決兩個問題:
(1)如何通過一個svn服務(wù)器進(jìn)程,管理多個svn項(xiàng)目,而這些svn項(xiàng)目也需要有各自獨(dú)立的賬號密碼和權(quán)限控制。
(2)如何像git一樣,提交代碼(commit)的時候,強(qiáng)制要求客戶端寫注釋。
下文是針對解決這兩個問題的操作記錄和踩坑紀(jì)實(shí),希望對svn管理員有所幫助。

設(shè)置SVN子項(xiàng)目
我們搭建的SVN服務(wù)器,需要處理多個不同的項(xiàng)目,而每個項(xiàng)目又需要獨(dú)立的賬號密碼和權(quán)限管理,需要設(shè)置SVN子項(xiàng)目。
1、創(chuàng)建SVN版本服務(wù)器項(xiàng)目
新建一個目錄,例如yanyubao.cn,進(jìn)入目錄中,點(diǎn)擊鼠標(biāo)右鍵,通過TortoiseSVN,選擇“”,一個SVN項(xiàng)目的服務(wù)器端就創(chuàng)建了。

2、SVN的項(xiàng)目目錄結(jié)構(gòu)
創(chuàng)建成功的提示中,直接點(diǎn)擊“OK”,不建議使用“Create folder structure”,因?yàn)閯?chuàng)建的目錄結(jié)構(gòu)既復(fù)雜又沒有實(shí)際用處。

3、修改SVN服務(wù)器的設(shè)置項(xiàng)
這個時候的項(xiàng)目不具有子項(xiàng)目屬性,我們需要修改文件“conf/svnserve.conf”,修改權(quán)限驗(yàn)證以及“realm”選項(xiàng)的值,如下圖所示。

4、設(shè)置賬號密碼和子目錄權(quán)限
分別在passwd和authz兩個文件中設(shè)置賬號密碼和子目錄權(quán)限,這兩個配置文件中有設(shè)置的示例,可直接參考使用,這里不再贅述。
/conf/passwd
/conf/authz
5、啟動SVN版本服務(wù)器
這是最后一個步驟,也是最重要的,建議通過以下命令啟動:
"C:\Program Files\TortoiseSVN\bin\svnserve" -d -r E:\Temp\SVN_Server\
這樣啟動的服務(wù),使用的是默認(rèn)端口3690。實(shí)際生產(chǎn)環(huán)境中,我們處于安全考慮,不會開放這個默認(rèn)端口,所以可以通過選項(xiàng)“--listen-port”將服務(wù)器設(shè)置為其他端口,例如:
"C:\Program Files\TortoiseSVN\bin\svnserve" -d -r E:\Temp\SVN_Server\ --listen-port 3691
特別提示:這里使用的目錄為“E:\Temp\SVN_Server\”,在這個目錄下,跟“yanyubao.cn”同級的目錄下,可以創(chuàng)建更多的SVN子項(xiàng)目,而每個子項(xiàng)目中,我們可以通過“conf/authz”再分別設(shè)置不同子目錄的權(quán)限。
6、客戶端的請求
以上服務(wù)啟動后,客戶端請求時候的網(wǎng)址需要注意路徑的拼寫,我們以本地的SVN服務(wù)為例(即服務(wù)器和客戶端在同一臺電腦上),以上搭建的SVN服務(wù),我們需要checkout等操作的時候,請求路徑為:
svn://127.0.0.1:3691/yanyubao.cn
其中的子目錄為“yanyubao.cn”是一定要加上的,如果不加上,會找不到對應(yīng)的路徑,因?yàn)楦夸浵聸]有項(xiàng)目。
如果項(xiàng)目下還有其他的子目錄,例如test001,則完整的路徑為:
svn://127.0.0.1:3691/yanyubao.cn/test001
提交代碼(commit)的時候要求強(qiáng)制寫注釋
1、創(chuàng)建新文件pre-commit.bat
在SVN項(xiàng)目的hooks目錄下,找到文件pre-commit.tmpl,改成其他名稱,比如:pre-commit----.tmpl
復(fù)制剛才改名的文件,設(shè)置新文件名稱為“pre-commit.bat”。

2、設(shè)置pre-commit.bat文件內(nèi)容
復(fù)制以下內(nèi)容到pre-commit.bat文件中并保存。
@echo off
rem SVNLOOK 為 svnlook.exe 在 VisualSVN Server 安裝目錄\bin 中的路徑
set SVNLOOK="C:\Program Files\TortoiseSVN\bin\svnlook.exe"
setlocal
set REPOS=%1
set TXN=%2
rem "....." 代表5個字符(1個 . 代表1個字符)
%SVNLOOK% log "%REPOS%" -t "%TXN%" | findstr "....." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 提交失??!請?zhí)砑幼⑨專ㄗ⑨寖?nèi)容不能少于5個字符)之后重新提交! 1>&2
exit 1
3、修改pre-commit.bat權(quán)限
在Windows的文件管理器中,查看文件屬性,給文件“pre-commit.bat”設(shè)置可執(zhí)行權(quán)限。

正常情況下,不需要重啟SVN,即可立即生效。
4、在SVN客戶端驗(yàn)證設(shè)置是否生效
直接提交修改的代碼,不寫注釋,會看到紅色的錯誤提示。