2012-05-10 9 views
1

私はgitリポジトリを持つサーバーを持っています。私がそのサーバにプッシュするたびに、そのリポジトリのgitstatsドキュメントを再生成したいと思います。そのマシンでGitポスト受信フックが正しく動作しない

私は、次のコマンドを実行した場合、それが適切にリフレッシュされます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: '.' 

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

サーバー上で直接実行されたときにコマンドがうまく動作する理由はわかりませんが、プッシュ後に実行されたときには表示されません。

提案がありますか?

答えて

1

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

はちょうどgitstatコマンドの前にそれらを設定してみてください:

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

これらの変数が正しく設定されないのはなぜ?
は、例えば、「Calling 'git pull' from a git post-update hook

を参照してください。最終的には、以上の当社のLinuxの第一人者を持って、彼は時にフックの内側のgitのユーザーがその下で実行される環境が全く異なっていることに気づきました。あなたの<username>はフックが実行されたときにあなたが考える一つではないだろう場合である

...

関連する問題