在预先承诺挂钩上无法写出错误消息
-
26-10-2019 - |
题
我正在编写一个预先提交的钩子,或者更好的是,我正在编辑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新手,所以事先向前歉。
谢谢,贾斯珀
解决方案
确定日志消息的方式是错误的。反试试:
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
其他提示
您的代码:
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
不隶属于 StackOverflow