1

私はgitリポジトリを備えたサーバーを持っています。そのサーバーにプッシュするたびに、そのリポジトリの gitstats ドキュメントを再生成したいと考えています。

そのマシンで次のコマンドを実行すると、gitstats ドキュメントが適切に更新されます。

gitstats /home/<username>/<proyect-name>/htdocs/ /home/<username>/gitstats

そして、これはそのサーバーのリポジトリにある受信後フックです。

#!/bin/sh
gitstats /home/<username>/<proyect-name>/htdocs/ /home/<username>/gitstats

したがって、そのマシンにプッシュすると、そのコマンドを実行しようとしますが、正しく機能しません。プッシュ後の出力メッセージには、次のエラー メッセージが含まれます。

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

そのコマンドをフックから削除すると、エラー メッセージは表示されません。

サーバー上で直接実行するとコマンドが正常に機能し、プッシュ後に実行すると機能しない理由がわかりません。

助言がありますか?

4

1 に答える 1

1

問題は、そのフック内で gitstat を実行するときに、GIT_WORK_TREEおよび/または適切に設定されていない可能性があることです。GIT_DIR

コマンドの直前に設定してみてくださいgitstat

GIT_DIR=/home/<username>/<proyect-name>/.git
GIT_WORK_TREE=/home/<username>/<proyect-name>
gitstats ... 

これらの変数が適切に設定されないのはなぜですか?
たとえば、「フックから' ' を呼び出す」git pullgit post-updateを参照してください。

最終的に、Linux の第一人者を引き継ぎました。彼は、git ユーザーがフック内で実行する環境がまったく異なることに気付きました。

それは<username>、フックが実行されたときにあなたが思うものではない場合です...

于 2012-05-10T10:59:39.590 に答える