在軟件開發中使用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
此增強型腳本在筆者的項目組中應用,功能正常,實現了空格過濾功能,請感興趣的參考。
本文是在轉載的基礎上,稍微加工。