私は bash でコミット後のスクリプトを書いています。コミットを行っているクライアントにメッセージを返したいと思います。でも
echo my message >&2
クライアントに戻っていません。post-commit フックでメッセージを送り返すことさえ可能ですか?
私は bash でコミット後のスクリプトを書いています。コミットを行っているクライアントにメッセージを返したいと思います。でも
echo my message >&2
クライアントに戻っていません。post-commit フックでメッセージを送り返すことさえ可能ですか?
フックは、失敗した場合にのみ STDERR を表示します (また、フックは STDOUT を表示しません)。したがって、「私のメッセージ」をユーザーに渡すには、スクリプトからゼロ以外のコードを返す必要があります (エコーの後にexit 1を追加するだけです)。
ここを見てください:
コミット後のフックがゼロ以外の終了ステータスを返した場合、コミットはすでに完了しているため、中止されません。ただし、フックが stderr に出力したものはすべてクライアントにマーシャリングされるため、フックの失敗を診断しやすくなります。
コミット後のフックを検討すると、次のことが行われます。
フックが stderr に出力したものはすべてクライアントにマーシャリングされ、フックの失敗を診断しやすくなります。
これが単純な見積もりの問題ではないかどうかを確認できます。
echo "my message" >&2
これらのフックの例で、 any echo
toに引用符が含まれていることがわかり>&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
Apache と mod_svn で同じ問題が発生しました。&
マーシャリングされるテキストに,<
または文字が含まれていると、マーシャリングが失敗することが判明しました>
。&
それらをに置き換えた後<
、>
テキストが通過しました。