3

私はpre-commitフックを書いています、あるいはもっと良いことに、私はtigrisSVNリリースに標準で付属しているフックを編集しています。

私の目標は控えめです。コミットメッセージを提供せずに、コミットした人にエラーメッセージを書きたいだけです。

だから私の考えは、単純なエラーメッセージで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

stderrに出力しません(代わりに、stderrをstdoutにリダイレクトします)。代わりに使用してください(重要なのは1>&2です):

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