SVN下提交代码强制输入commit message

 废话不少,直接说方法吧 :

一、在cvs仓库下 找到hooks目录 ,里面有不少钩子例子。我们这里采用的 pre-commit,从文件名称基本可以看出这个钩子的作用,就是在commit前的检查动作。window下是  .bat的文件,linux下是shell脚本。当然脚本中可以调用其他批处理或者shell脚本。

二、编写pre-commit.bat或者 pre-commit脚本 。

1、window下 :

@echo off

setlocal

set REPOS=%1

set TXN=%2

rem check that logmessage contains at least 10_characters

D:\Progra~1\Subversion\bin\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul

if %errorlevel% gtr 0 goto err

exit 0

:err

echo 你至少需要输入10个字符, 请修改后重新提交! 1>&2

exit 1

其中 indstr ".........." 是控制字符重读, 10个.表示10个字符,20个就表示20个字符以上。%1和%2是钩子自带2个变量 ,可以查查svn手册,这些不详细解释了。
2、linux下

REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/subversion/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
echo $LOGMSG
if [ "$LOGMSG" -lt 20 ];#
then
   echo -e "[Commit]log message cann't be empty! YOU MUST input more than 20_chars as comment! " 1>&2
   exit 1
fi
exit 0
其中SVNLOOK要注意路径,LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`这个统计长度。
三、将编辑好文件放到svn服务器仓库hooks中,linux下要确保pre-commit可执行的。
四、可以在svn客户端实验了,window下可以乌龟客户端。
何小荣 个人原创 ,请转载保留个人信息 ,请勿用于商业用途 。

Logo

更多推荐