天天看點

svn管理者進階操作:設定子項目和強制寫注釋

關于svn和git的對比,本文不展開讨論,基于svn的版本控制,伺服器管理者建立一個svn項目,設定賬号密碼等權限,屬于初級操作,網上也有很多資料可以查詢,這裡重點解決兩個問題:

(1)如何通過一個svn伺服器程序,管理多個svn項目,而這些svn項目也需要有各自獨立的賬号密碼和權限控制。

(2)如何像git一樣,送出代碼(commit)的時候,強制要求用戶端寫注釋。

主要内容在抖音小程式中也可以同步檢視并且即時更新:

(此處已添加小程式,請到今日頭條用戶端檢視)

下文是針對解決這兩個問題的操作記錄和踩坑紀實,希望對svn管理者有所幫助。

svn管理者進階操作:設定子項目和強制寫注釋

設定SVN子項目

我們搭建的SVN伺服器,需要處理多個不同的項目,而每個項目又需要獨立的賬号密碼和權限管理,需要設定SVN子項目。

1、建立SVN版本伺服器項目

建立一個目錄,例如yanyubao.cn,進入目錄中,點選滑鼠右鍵,通過TortoiseSVN,選擇“”,一個SVN項目的伺服器端就建立了。

svn管理者進階操作:設定子項目和強制寫注釋

2、SVN的項目目錄結構

建立成功的提示中,直接點選“OK”,不建議使用“Create folder structure”,因為建立的目錄結構既複雜又沒有實際用處。

svn管理者進階操作:設定子項目和強制寫注釋

3、修改SVN伺服器的設定項

這個時候的項目不具有子項目屬性,我們需要修改檔案“conf/svnserve.conf”,修改權限驗證以及“realm”選項的值,如下圖所示。

svn管理者進階操作:設定子項目和強制寫注釋

4、設定賬号密碼和子目錄權限

分别在passwd和authz兩個檔案中設定賬号密碼和子目錄權限,這兩個配置檔案中有設定的示例,可直接參考使用,這裡不再贅述。

/conf/passwd
/conf/authz           

5、啟動SVN版本伺服器

這是最後一個步驟,也是最重要的,建議通過以下指令啟動:

"C:\Program Files\TortoiseSVN\bin\svnserve" -d -r E:\Temp\SVN_Server\           

這樣啟動的服務,使用的是預設端口3690。實際生産環境中,我們處于安全考慮,不會開放這個預設端口,是以可以通過選項“--listen-port”将伺服器設定為其他端口,例如:

"C:\Program Files\TortoiseSVN\bin\svnserve" -d -r E:\Temp\SVN_Server\ --listen-port 3691           

特别提示:這裡使用的目錄為“E:\Temp\SVN_Server\”,在這個目錄下,跟“yanyubao.cn”同級的目錄下,可以建立更多的SVN子項目,而每個子項目中,我們可以通過“conf/authz”再分别設定不同子目錄的權限。

6、用戶端的請求

以上服務啟動後,用戶端請求時候的網址需要注意路徑的拼寫,我們以本地的SVN服務為例(即伺服器和用戶端在同一台電腦上),以上搭建的SVN服務,我們需要checkout等操作的時候,請求路徑為:

svn://127.0.0.1:3691/yanyubao.cn           

其中的子目錄為“yanyubao.cn”是一定要加上的,如果不加上,會找不到對應的路徑,因為根目錄下沒有項目。

如果項目下還有其他的子目錄,例如test001,則完整的路徑為:

svn://127.0.0.1:3691/yanyubao.cn/test001           

送出代碼(commit)的時候要求強制寫注釋

1、建立新檔案pre-commit.bat

在SVN項目的hooks目錄下,找到檔案pre-commit.tmpl,改成其他名稱,比如:pre-commit----.tmpl

複制剛才改名的檔案,設定新檔案名稱為“pre-commit.bat”。

svn管理者進階操作:設定子項目和強制寫注釋

2、設定pre-commit.bat檔案内容

複制以下内容到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 送出失敗!請添加注釋(注釋内容不能少于5個字元)之後重新送出! 1>&2
exit 1           

3、修改pre-commit.bat權限

在Windows的檔案管理器中,檢視檔案屬性,給檔案“pre-commit.bat”設定可執行權限。

svn管理者進階操作:設定子項目和強制寫注釋

正常情況下,不需要重新開機SVN,即可立即生效。

4、在SVN用戶端驗證設定是否生效

直接送出修改的代碼,不寫注釋,會看到紅色的錯誤提示。

svn管理者進階操作:設定子項目和強制寫注釋