3

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

谢谢,贾斯珀

4

2 回答 2

8

您确定日志消息的方式是错误的。试试这个:

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
于 2011-03-16T20:04:04.627 回答
1

你的代码:

echo "You did not provide a commit message, please try again." 2>&1

不打印到标准错误(而是将标准错误重定向到标准输出)。改用(重要的是1>&2):

echo "You did not provide a commit message, please try again." 1>&2
于 2011-03-16T19:14:10.813 回答