私のディレクトリ構造は次のとおりです。
〜/ parent.git / .git / hooks / post-receive
受信後のフックは次のようになります。
#!/bin/sh
git checkout -f
parent.gitにプッシュすると、スクリプトが実行されません。インターネットのあらゆる部分がこれがうまくいくはずだと言っているので、私は問題を理解することができません。
受信後にchmodしたので、それが問題ではないことはわかっています。どんな助けでも大歓迎です。
私のディレクトリ構造は次のとおりです。
〜/ parent.git / .git / hooks / post-receive
受信後のフックは次のようになります。
#!/bin/sh
git checkout -f
parent.gitにプッシュすると、スクリプトが実行されません。インターネットのあらゆる部分がこれがうまくいくはずだと言っているので、私は問題を理解することができません。
受信後にchmodしたので、それが問題ではないことはわかっています。どんな助けでも大歓迎です。
Chris が述べたように、git push でハード リセットするのと同じ問題があるようです
具体的には、フックが実行され、ディレクトリCWDにGIT_DIR設定され.gitます。これにより、チェックアウト コマンドがディレクトリで実行され、.gitそれに関する通常のエラーが上書きされます。
リモートディレクトリで ls を実行すると.git、そこに完全なチェックアウトが見つかるはずです。
これを回避する最も簡単な方法は、チェックアウト コマンドの前に GIT_WORK_TREE を指定することです。
GIT_WORK_TREE=/my/git/checkout git checkout -f
Chris がリンクしたスクリプト ( http://utsl.gen.nz/git/post-update ) は、これと他のいくつかの潜在的な問題を処理することになっています。
推測すると、プッシュしているユーザーには、そのディレクトリでチェックアウトを実行する権限がありません。最小限の作業スクリプトを作成し、そこからビルドすることをお勧めします。IE、代わりに:
git checkout -f
行う:
echo "Got here" > /tmp/git_push_log
次に試してください:
echo "Got here" > pwd_test
これが動作しているディレクトリと必要な権限についての仮定を確認するには。