事前コミットフックでエラーメッセージを書くことができません
-
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