svn 強制用戶添加注釋 和 允許用戶修改注釋


當我們用TortoiseSVN提交代碼時,有很多人不喜歡寫注釋,導致以后代碼版本多,也不清楚哪個版本到底改了什么東西。所以在提交的時候,我會強制要求添加注釋。這是如何實現的?這個話題就涉及到了svn的Hooks功能的使用。

所謂hooks,可以類似理解Linux內核Netfilter框架的hook點和hook函數的概念。當用戶在維護代碼的過程中,其執行的相關動作正好觸發了相關hook點,就會去執行對應hook點的腳本。

那么如何設置hook腳本以保證強制用戶添加注釋,以及允許用戶修改注釋呢?

1. SVN強制添加注釋信息

用戶提交代碼的動作,對應的是pre-commit。因此,進入hook目錄把pre-commit.tmpl文件名修改為pre-commit, Windows下可以修改為pre-commit.bat,這樣可以讓系統知道該文件是可執行文件。

打開pre-commit文件,注釋或刪除所有的代碼,然后添加如下代碼:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
REPOS="$1" TXN="$2" SVNLOOK=/usr/local/bin/svnlook # 修改為服務器安裝的subversion目錄 whereis svnlook LOGMSG=$($SVNLOOK log -t “$TXN” “$REPOS” | grep "[a-zA-Z0-9]" | wc -m) if [ "$LOGMSG" -lt 10 ]; then #要求注釋不能少於10個字符(數字和字母),您可自定義  echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2 exit 1 fi   exit 0

保存,退出。
pre-commit添加可執行權限:
chmod +x pre-commit

2. 允許用戶修改注釋信息

用戶修改注釋信息的動作,對應的是pre-revpos-change。將hooks目錄下的pre-revpos-change.tmpl改名為pre-revpos-change。通常該文件包含的功能就是允許用戶修改注釋信息。默認文件內容如下,如果不是下面這些內容的話,可以對照修改即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" ACTION="$5"   if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi   echo "Changing revision properties other than svn:log is prohibited" >&2 exit 1

保存,退出。
將該文件加上可執行權限即可:
chmod +x pre-revpos-change
這樣,就可以允許用戶修改注釋信息了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM