1

私のディレクトリ構造は次のとおりです。

〜/ parent.git / .git / hooks / post-receive

受信後のフックは次のようになります。

#!/bin/sh
git checkout -f

parent.gitにプッシュすると、スクリプトが実行されません。インターネットのあらゆる部分がこれがうまくいくはずだと言っているので、私は問題を理解することができません。

受信後にchmodしたので、それが問題ではないことはわかっています。どんな助けでも大歓迎です。

4

2 に答える 2

2

Chris が述べたように、git push でハード リセットするのと同じ問題があるようです

具体的には、フックが実行され、ディレクトリCWDGIT_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 ) は、これと他のいくつかの潜在的な問題を処理することになっています。

于 2011-08-29T02:00:22.287 に答える
1

推測すると、プッシュしているユーザーには、そのディレクトリでチェックアウトを実行する権限がありません。最小限の作業スクリプトを作成し、そこからビルドすることをお勧めします。IE、代わりに:

git checkout -f

行う:

echo "Got here" > /tmp/git_push_log

次に試してください:

echo "Got here" > pwd_test

これが動作しているディレクトリと必要な権限についての仮定を確認するには。

于 2010-11-28T03:51:18.460 に答える