當我們用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文件,注釋或刪除所有的代碼,然后添加如下代碼:
保存,退出。
給pre-commit添加可執行權限:
chmod +x pre-commit
2. 允許用戶修改注釋信息
用戶修改注釋信息的動作,對應的是pre-revpos-change。將hooks目錄下的pre-revpos-change.tmpl改名為pre-revpos-change。通常該文件包含的功能就是允許用戶修改注釋信息。默認文件內容如下,如果不是下面這些內容的話,可以對照修改即可:
保存,退出。
將該文件加上可執行權限即可:
chmod +x pre-revpos-change
這樣,就可以允許用戶修改注釋信息了。