我正在写一个预提交钩子,或者更好,我正在编辑tigris SVN版本标准的钩子。
我的目标是适度的,我只想在没有提交提交消息的情况下向提交的人写一条错误消息。
所以我的想法只是用简单的错误信息写给stderr。但出于某种原因,我的信息似乎永远无法通过。
互联网上的每个人都说我必须写信给stderr。但不知怎的,这不起作用。
REPOS="$1"
TXN="$2"
LOG=""
#here is where it seems to wrong
#if [ ${#LOG} -lt 1 ]
echo "You did not provide a commit message, please try again." 2>&1
#fi
echo
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > LOG || exit 1
# Exit on all errors.
set -e
# All checks passed, so allow the commit.
exit 0
如果这是一个愚蠢的问题你不得不原谅我,但我是一个Linux新手,所以事先道歉。
感谢, 碧玉
答案 0 :(得分:7)
您确定日志消息的方法是错误的。试试这个:
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t “$TXN” “$REPOS” | grep “[a-zA-Z0-9]” | wc -c`
if [ "$LOGMSG" -lt 1 ]; then
echo -e “Please provide a meaningful comment when committing changes.” 1>&2
exit 1
fi
答案 1 :(得分:1)
您的代码:
echo "You did not provide a commit message, please try again." 2>&1
不会打印到stderr(而是将stderr重定向到stdout)。改为使用(重要的是 1>& 2 ):
echo "You did not provide a commit message, please try again." 1>&2