1

私たちのサーバーには、プロジェクトごとに、/repository と /htdocs の 2 つのフォルダーがあります。Htdocs は、ベア リポジトリであるリポジトリのクローンです。すべての開発者は、作業するための独自のリポジトリ クローンを持っています。htdocs は、プロジェクト マネージャーにプロジェクトをプレビューするためにあります。

更新が開発者からプッシュされたときに htdocs を自動的に更新する post-receive フックを設定したいと思います。

post-receive フックには次のようなものがあります。

#!/bin/sh
GIT_WORK_TREE=../htdocs git pull origin master

ただし、プッシュすると、次のエラーが表示されます。gitエラー

誰が何が問題なのか教えてもらえますか?

ご了承ください

#!/bin/sh
GIT_WORK_TREE=../htdocs git checkout -f

動作しますが、これはちょっと遅いです (プロジェクトがかなり大きいため)。また、誰かが htdocs にいくつかのバグ修正を行った可能性もありますがcheckout -f、それらがコミットされていないと失われてしまう可能性があります。

4

1 に答える 1

1

これはうまくいくはずです:

 GIT_WORK_TREE=../htdocs GIT_DIR=../htdocs/.git git pull origin master

GIT_DIR を指定しない場合、git はリポジトリがまだ " repository" (裸のリポジトリ) であると認識し、" " という名前のリモートを持たない可能性がありoriginます (したがって、エラー メッセージが表示されます)。

于 2012-12-15T00:53:15.373 に答える