在预提交挂钩上时无法写入错误消息

时间:2011-03-16 19:05:28

标签: svn hook svn-hooks pre-commit

我正在写一个预提交钩子,或者更好,我正在编辑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新手,所以事先道歉。

感谢, 碧玉

2 个答案:

答案 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