3

ファイルをコミットすると警告が表示されます: post-commit hook failed (exit code 255) with no output. メールも送信されません。私のフック/ポストコミットファイルには次の内容があります

#!/bin/sh

REPOS="$1"
REV="$2"

"$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf

そのファイルを手動で実行して問題をトラブルシューティングするにはどうすればよいですか? 私のmailer.pyファイルもhooksフォルダーの下にあり、mailer.confはhooksフォルダーの外にあります。

4

1 に答える 1

3

そのファイルを手動で実行して問題をトラブルシューティングするにはどうすればよいですか? 私のmailer.pyファイルもhooksフォルダーの下にあり、mailer.confはhooksフォルダーの外にあります。

それは簡単です。コマンドを手動で実行するだけです。

$ cd $REPOS   #Where ever that is...
$ REV=230     #Whatever the revision number is

$ hooks/mailer.py commit . $REV mailer.conf

mailer.py を別のファイルにコピーして、いじってみることができます。いくつかの print ステートメントを追加し、デバッガーで実行します。たとえば、特定の送信メカニズムをデバッグする準備が整うまで、実際にすべてを開発者にメール送信しないように、プログラムの実際のメール部分をファッツしたい場合があります。開発者は、自分のメールボックスが多数のポストコミット フック テストで攻撃されるのを好みません。

$ cp hooks/mailer.py hooks/mailer2.py
$ cp mailer.conf mailer2.conf
$ hooks/mailer2.py commit . $REV mailer.conf

私がお勧めするのは、コミット後のフックを無効にすることです (Unix/Linux では、実行可能ビットを削除するか、単純に名前post-commitを に変更するだけで十分post-commit.tempです)。次に、ユーザーに変更をコミットしてもらいます。

変更がコミットされると、問題の原因となったコミットのリビジョン番号が表示されます。これで、post-commit フックを手動で実行するときに、そのリビジョン番号を使用できます。


役立つヒント

pre-commitフックを作成している場合は、フックがトランザクション番号またはリビジョン番号を取得できるようにします。

# Transaction number in pre-commit script:

REPOS="$1"
TRX="$2"

"$REPOS/hooks/myscript" -t $TRX "$REPOS"

コマンドラインから:

 cd $REPOS
 hooks/myscript -r $REVISION .

このようにして、すでにコミットされたリビジョンで pre-commit フックをデバッグできます。これは、同じ変更を何度もコミットしてデバッグを試みるよりもはるかに簡単です。

于 2012-02-27T21:47:37.827 に答える