2012-05-10 42 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>不會執行掛鉤,當你覺得一個的情況下...