3

Amazon EC2 インスタンス (Ubuntu 12.04 を実行) でホストされているウェブサイトがあります。git を使用して変更をサーバーにプッシュし、post-receive フックを使用して作業ディレクトリでチェックアウトできるようにしたいと考えています。したがって、フックディレクトリのサーバーには、次を含む post-receive という名前のファイルがあります。

#!/bin/sh
GIT_WORK_TREE=/home/ubuntu/beta git checkout -f

ファイルにはパーミッションがあります: -rwxrwxr-x (つまり、実行可能)。

ローカル マシンで、サーバー上の git リポジトリにプッシュすると、プッシュが成功し、git リポジトリが更新されます。ただし、post-receive フックは実行されません。フックを手動で実行すると、正常に実行され、作業ディレクトリが更新されます。

git push は SSH 経由で実行され、フックを手動で実行しているかのように同じユーザーを使用します。

フックが自動的に実行されない理由はありますか?

ありがとう。

4

1 に答える 1

3

ローカルで同一のテストをセットアップしました (つまり、ローカル フォルダーからクローンを作成しました)。正常に動作します。

スクリプトがまったく実行されているかどうかを確認するために、ファイルを変更するかどうかを確認するための簡単なタッチを追加しました

私の受信後は次のようになります

#!/bin/sh

touch /Users/raven/git_tests/live/.git/hooks/i_ve_been_run
GIT_WORK_TREE=/Users/raven/git_tests/live git checkout -f

フックの名前が正確であることを確認してくださいpost-receive。そうしないと、機能しません。

于 2013-02-17T19:00:47.520 に答える