在軟體開發中使用SVN進行原始程式碼控制已非常普及,預設情況下,SVN的每次commit是不需要日誌log資訊,為了便於管理,項目組通常會要求增加填寫log習慣,可通過配置SVN的hook實現功能管理,通常的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
此增強型指令碼在筆者的項目組中應用,功能正常,實現了空格過濾功能,請感興趣的參考。