1

特定のファイルが変更された場合に、そのファイルを Web サーバーに公開するポストコミット フックを作成しています。

クライアント/ユーザーに、コミット後に何が起こるかを明確にしたいと思います。

そのため、クライアントに情報を返す echo コマンドを追加しました。

私はこの投稿を読みました: SVN ポストコミット フックがメッセージをクライアントに送り返します。これは、ポスト コミット フックは出口 1 を使用した場合にのみ情報を返すことができると述べています。

これはうまく機能しますが、次のメッセージが表示されるため、クライアントを混乱させます。

Warning: post-commit hook failed (exit code 1) with output:

この出力を回避する方法はありますか?

それが役立つ場合、これまでの私のスクリプト:

echo "Everything OK. Checking if publishing dir was changed." >&2

svn status /var/www/dev/test/public/projektbereich1/http | grep [AMCDG]
if [ $? -eq 0 ]  ; then
    echo "Dir has changed. Publishing files." >&2
cp -R /var/www/dev/test/public/projektbereich1/http /var/www/public/

else
    echo "Dir has not changed. Webserver does not get updated." >&2
fi

exit 1
4

3 に答える 3

0

Stephane のおかげで、 2>/dev/null 、 2>&1 などの意味を検索しました。

プログラムは 3 つのパイプを使用して情報を転送することがわかりました。

  • 0: 通常出力 (STDOUT)
  • 1: 通常入力 (STDIN)
  • 2: エラー出力 (STDERR)

そのため、エコーをプログラム出力にパイプする必要がありました。>&0

例: エコー"Everything OK. Checking if publishing dir was changed." >&0

于 2012-09-25T07:59:34.447 に答える
0

エラーを示すリターン コード 1 で明示的に終了しています。出口 1 を出口 0 に変更すると、準備完了です。

または、変数を設定して、else の各ブランチでリターン コードを保持します。成功した場合は 0、失敗した場合は 1 で、最後に $myreturncode を終了します。

1 を返す必要があると考えていることは理解していますが、ポストコミット フックでは、メールを生成して送信し、0 を返します。

svn フレームワークにエラーを送信させたい場合は、1 を返すだけで済みます。成功した場合は、「うまくいった!」を処理する必要があります。自分にメッセージ/電子メールを送信します。

于 2012-09-24T16:48:41.957 に答える
0

問題がエラーメッセージを隠すことであるsvn場合は、次のことができます。

svn status /var/www/dev/test/public/projektbereich1/http 2>/dev/null | grep [AMCDG]
于 2012-09-24T16:48:48.770 に答える