SVN与TortoiseSVN修改日志和强制写日志实现详解

来源:互联网 发布:淘宝投诉商家怎么投诉 编辑:程序博客网 时间:2024/05/17 07:07

      在软件开发中使用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


此增强型脚本在笔者的项目组中应用,功能正常,实现了空格过滤功能,请感兴趣的参考。

本文是在转载的基础上,稍微加工。

0 0