在软件开发中使用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
此增强型脚本在笔者的项目组中应用,功能正常,实现了空格过滤功能,请感兴趣的参考。
本文是在转载的基础上,稍微加工。