サーバー側に最低限のリポジトリがあり、ローカルマシンから正常にコミットしてプッシュすることができます。ただし、ポスト受信フックは実行されていません。詳細:
-rwxr-xr-x
権限echo "Some text"
フックの前後ですが、これは表示されていません(参照: Post Commit Hook Not Running )。。
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/
この問題は、ファイルシステムのマウントに関連していました。パーティションはnoexec
としてマウントされたため、ファイルを実行できませんでした。これにより、フックが実行されませんでした。 noexec
フラグを削除したところ、問題なく動作しました。
Gitフックを実行するには、実行可能なアクセス許可を設定する必要があります。フックが実行されていないように見える場合は、 権限を確認してください で、実行可能であることを確認してください。そうでない場合は、すべてのフックを次のように実行可能にすることができます。
chmod ug+x .git/hooks/*
...または単一のフックを作成する場合(例:post-receive
)実行可能ファイル:
chmod ug+x .git/hooks/post-receive
(ありがとう この投稿 )
私はこの問題を抱えていました。スクリプトのファイル名にタイプミスがありました。
受信後ではなく受信後
コードベースにnoの変更がある場合、GITはpost-receiveフックを実行しないようです。
私の場合、
ポストフックは実行されていませんでしたが、「プッシュ」操作は次のメッセージを返し続けました。
最新のすべて
したがって、コードに空のファイルを作成し、コミットしてリモートにプッシュしました。 post-receiveフックが実行された場所。
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