11

私は bash でコミット後のスクリプトを書いています。コミットを行っているクライアントにメッセージを返したいと思います。でも

echo my message >&2

クライアントに戻っていません。post-commit フックでメッセージを送り返すことさえ可能ですか?

4

3 に答える 3

13

フックは、失敗した場合にのみ STDERR を表示します (また、フックは STDOUT を表示しません)。したがって、「私のメッセージ」をユーザーに渡すには、スクリプトからゼロ以外のコードを返す必要があります (エコーの後にexit 1を追加するだけです)。

ここを見てください:

コミット後のフックがゼロ以外の終了ステータスを返した場合、コミットはすでに完了しているため、中止されません。ただし、フックが stderr に出力したものはすべてクライアントにマーシャリングされるため、フックの失敗を診断しやすくなります。

于 2011-12-08T07:02:17.307 に答える
6

コミット後のフックを検討すると、次のことが行われます。

フックが stderr に出力したものはすべてクライアントにマーシャリングされ、フックの失敗を診断しやすくなります。

これが単純な見積もりの​​問題ではないかどうかを確認できます。

echo "my message" >&2

これらのフックの例で、 any echotoに引用符が含まれていることがわかり>&2ます。

リダイレクトに関するbash の章には、引用符付きの例も含まれています。

ただし、pmodの回答の詳細として、「 subversion post-commit hook: print an error message that the user can see?」に示されているように、スクリプトの終了ステータスが 0 と異なる場合を除き、stderr メッセージは表示されません。

#!/bin/bash
echo "test" >&2
exit 1
于 2011-12-08T07:04:09.143 に答える
4

Apache と mod_svn で同じ問題が発生しました。&マーシャリングされるテキストに,<または文字が含まれていると、マーシャリングが失敗することが判明しました>&amp;それらをに置き換えた後&lt;&gt;テキストが通過しました。

于 2012-03-07T16:29:14.043 に答える