web-dev-qa-db-ja.com

コミット後のフックが実行されていない

Gitの後にpost commitフックが実行されていません。端末から実行するだけでフックが機能することを確認しました。フックのコードは次のとおりです。

#!/bin/sh
#.git/hooks/post-commit
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

Perl -pi -e 's/([a-f0-9]+)$/'$( git rev-parse HEAD )/ ../../config/commit.git

./.git/hooks/でpost-commitにファイルの名前を変更しましたが、パーミッションは-rwxr-x-r-xしたがって、なぜ機能しないのかわかりません。

40
Dave Long

次のように、Perl行の前後にいくつかのエコー行を入れてみてください。

echo "post-commit started"
Perl ...........
echo "post-commit finished"

このようにして、スクリプトが実際に実行されているかどうかを確認できます。

git commit

見るべき

post-commit started
post-commit finished

出力の終わりに向かって。

27
Peter Farmer

my post-commitフックが実行されていなかったときに自分の答えを見つけたので、ここに答えとして残しておきます。

chmod +x .git/hooks/post-commit

おそらく、あらゆる種類のフックに適用されます。実際、おそらくあらゆる種類のスクリプトに適用されます。

182
Steven Lu

私のコミット後スクリプトは呼び出されていませんでした:

post-commit.shではなく、post-commitというスクリプト名を付けました。

フックスクリプトを有効にするには、適切な名前(拡張子なし)で実行可能な.gitディレクトリのhooksサブディレクトリにファイルを配置します。その時点から、それを呼び出す必要があります。ここでは、主要なフックファイル名のほとんどについて説明します。 git-scmを参照

フックにbashファイル拡張子が必要な理由がわからない。

また、フックスクリプトcannotがファイル拡張子を持っていることに気づきませんでした。たとえば、

バンドルされたフックスクリプトを使用する場合は、名前を変更する必要があります。ファイル名はすべて.sampleで終わります

これが誰かを助けることを願っています。

16
Bryce Johnson