一个直来直去的人,被生活折磨的弯弯曲曲。
分类: 服务器与存储
2014-03-12 21:23:11
SVN提交内容时必须填写日志
这里需要用到钩子问题,具体呢只需在hooks文件夹下添加两个文件即可
第一个文件 pre-commit ,内容如下:
#!/bin/sh
REPOS="$1"
TXN="$2"
#SVNLOOK=D:\ProgramFiles\Subversion\bin\svnlook.exe # svnlook.exe的安装路径
SVNLOOK=/usr/bin/svnlook
# check that logmessage contains at least 10 alphanumeric characters ##设置日志需填写至少10个字符
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 10 ];
then
echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
第二个文件pre-commit.bat ,内容如下:
@echo off
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul // ".........." 十个“.”代表十个字符
if %errorlevel% gtr 0 goto err
exit 0
:err
echo Empty log message not allowed. Commit aborted! 1>&2
exit 1
#①set REPOS=%1
# set TXN=%2 还记得我们前面提到的但事务提交时,会传递两个参数吗?这里就是分别用来接收URL和事务号的
#②svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
# 这句是核心程序。首先svnlook log是用来查看某个版本库某次提交的log的,那么我们怎么知道这两个
# 参数呢?答案就是我们前面已经保存的REPOS和TXN参数。
# 它的作用是查看%REPOS%这个URL第%TXN%次提交的log信息,那么| findstr ".........."呢?细心
的读者会发现这里有10个圆点号,即表示10个字符。
# 整句的作用就是先获取当前提交的log内容,然后判断是否有10个字符以上
#③echo Empty log message not allowed. Commit aborted! 1>&2
# 这句话的作用是当提交检查失败时,输出的提示信息