web-dev-qa-db-ja.com

git post-receiveフックが実行されていない

サーバー側に最低限のリポジトリがあり、ローカルマシンから正常にコミットしてプッシュすることができます。ただし、ポスト受信フックは実行されていません。詳細:

  • プロトコルとしてのSSHの使用
  • 標準の「post-receive.sample」の名前を「post-receive」に変更しました
  • このファイルには-rwxr-xr-x権限
  • ファイルは、リポジトリを所有する同じユーザーによって所有されます。これは、ログインしてプッシュする同じSSHユーザーです。
  • 実際のプッシュはうまくいきます。ファイルが更新されます-実行されないのは単なるフックです
  • 入れてみましたecho "Some text"フックの前後ですが、これは表示されていません(参照: Post Commit Hook Not Running )。
  • フックスクリプトは以下に含まれていますが、これは問題の原因ではないようです
  • Ubuntu 10.04でのgit 1.7.0.4の使用

user@server:/home/repos/project1/hooks# cat post-receive
#!/bin/sh
echo "Hook is running..."
export GIT_WORK_TREE=/home/web/project1/www/
git checkout -f
rm -rf /home/web/project1/www/temp/
33
user943301

この問題は、ファイルシステムのマウントに関連していました。パーティションはnoexecとしてマウントされたため、ファイルを実行できませんでした。これにより、フックが実行されませんでした。 noexecフラグを削除したところ、問題なく動作しました。

13
user943301

Gitフックを実行するには、実行可能なアクセス許可を設定する必要があります。フックが実行されていないように見える場合は、 権限を確認してください で、実行可能であることを確認してください。そうでない場合は、すべてのフックを次のように実行可能にすることができます。

chmod ug+x .git/hooks/*

...または単一のフックを作成する場合(例:post-receive)実行可能ファイル:

chmod ug+x .git/hooks/post-receive

(ありがとう この投稿

59
Nick F

私はこの問題を抱えていました。スクリプトのファイル名にタイプミスがありました。

受信後ではなく受信後

21
dericbytes

コードベースにnoの変更がある場合、GITはpost-receiveフックを実行しないようです。

私の場合、

ポストフックは実行されていませんでしたが、「プッシュ」操作は次のメッセージを返し続けました。

最新のすべて

したがって、コードに空のファイルを作成し、コミットしてリモートにプッシュしました。 post-receiveフックが実行された場所。

5
Rakesh

Centos 6システムでも同じ問題がありましたが、SELinuxがフックスクリプトの実行を妨げていることが判明しました。 httpd_git_script_tを寛容なドメインに変更すると、ここで役立ちます(「sesearch -A -s httpd_git_script_t -p exec」は何も生成しなかったため、httpd_git_script_tドメインで実行されているプロセスにexec権限が許可されていなかったため):

semanage permissive -a httpd_git_script_t
0
micha137