SVN與TortoiseSVN修改日誌和強制寫日誌實現詳解

      在軟件開發中使用SVN進行源代碼管理已非常普及,缺省情況下,SVN的每次commit是不需要日誌log信息,爲了便於管理,項目組通常會要求增加填寫log習慣,可通過配置SVN的hook實現功能管理,

在"庫/hooks"下新建pre-commit.bat文件,通常的Windows下的強制log的hook腳本如下:

 @echo off  
 setlocal  
 set REPOS=%1  
 set TXN=%2           
 rem 保證輸入8個字符
 svnlook log %REPOS% -t %TXN% | findstr "........" > nul
 if %errorlevel% gtr 0 goto :err_action

 goto :success
 :err_action
 echo 你本次版本提交未填寫任何變更的日誌說明信息.      >&2
 echo 請補充日誌說明信息後再提交代碼,例如:功能說明等.  >&2
 echo 輸入的日誌信息不少於8個字符說明(或4個漢字),謝謝! >&2

 goto :err_exit
 
 :err_exit
 exit 1
 
 :success
 exit 0


上述腳本雖然可以控制log信息輸入,但其缺陷是:如果輸入空格數據,如連續8個空格,這個腳本是不能過濾的,這樣的結果還是log信息爲空。上述增強型過濾空格數據腳本如下:

 @echo off  
 setlocal  

 set REPOS=%1  
 set TXN=%2           

rem 保證輸入8個字符
 svnlook log %REPOS% -t %TXN% | findstr "........" > nul
 if %errorlevel% gtr 0 goto :err_action

rem 過濾空格字符
svnlook log %REPOS% -t %TXN% | findstr /ic:"        " > nul
 if %errorlevel% gtr 0 goto :success
 
 :err_action
 echo 你本次版本提交未填寫任何變更的日誌說明信息.      >&2
 echo 請補充日誌說明信息後再提交代碼,例如:功能說明等.  >&2
 echo 輸入的日誌信息不少於8個字符說明(或4個漢字),謝謝! >&2
 echo *******************禁止空格數據***************** >&2

 goto :err_exit

  :err_exit
 exit 1
 
 :success
 exit 0


此增強型腳本在筆者的項目組中應用,功能正常,實現了空格過濾功能,請感興趣的參考。

本文是在轉載的基礎上,稍微加工。

發佈了28 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章