95

私は git を初めて使用するので、ここで用語を誤用した場合はお詫びします (そして訂正してください)。ただし、最善を尽くします。

ベア git リポジトリ (ハブ) と開発サイトの作業コピー (プライム) を Web サーバーにセットアップしようとしています。この記事を参考にパターン化してみました。ハブ リポジトリがプッシュされるたびに、開発作業コピーが更新されるようにします。これの適切なフックは であるという印象を受けています。これはpost-update次のように作成しました。

#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET

アップデート

変更をローカル リポジトリからベア ハブにプッシュすると、更新後のスクリプトから次の出力が得られます。

remote: sites
remote: fatal: Not a git repository: '.'

ただし、ユーザー「サイト」としてサーバーに SSH 接続し、このスクリプトを手動で実行すると、うまく機能します。このフックまたはスクリプトで何が問題になっている可能性がありますか?

4

5 に答える 5

185

これが最終的に機能したスクリプトです。リモートでの作業を妨げていた最初に欠けていたビットは、unset GIT_DIR

#!/bin/sh
cd /path/to/working-copy/ || exit
unset GIT_DIR
git pull repo branch

exec git-update-server-info
于 2010-11-04T19:40:47.287 に答える
29

代わりに試してください:

#!/bin/sh
cd /path/to/working-copy/
env -i git pull
于 2010-12-26T04:14:07.120 に答える
0

私の場合、作業ツリーを指定しましたが、これはpull(より正確にはfetch) のようないくつかのコマンドで壊れます。

作業ツリーが git config にある場合に設定を解除するには、次の方法があります。

git config --unset core.worktree

(作業ツリーの設定方法は他にもあります)

重要な注意事項

そもそもカスタムワークツリーを使用して自分の周りにこの穴を掘らない限り、これが問題であることに変わりはありません。

冗談:

これは、場合によっては git internals がワークツリー + に対する相対パスを使用することを意味します.git/。私の経験では、git の最も基本的な部分を除いて、ワークツリーはまったくサポートされていません。私は徹底的に実験していません.gitディレクトリ構成変数が適切に設定されていれば、Gitはおそらく動作するでしょう。

于 2014-09-24T23:22:31.743 に答える
-1

おそらく権限の問題があります。ベアgitリポジトリをどのように設定したかはわかりませんが、gitユーザーの下で実行されている場合は、ユーザーがプロジェクトディレクトリでのgit実行を許可されていることを確認してください。git pull

必要に応じて、これを試して、フックが実行されたときに自分がどのユーザーであるかを確認します。

echo `whoami`
于 2010-10-28T14:06:06.420 に答える