2013-10-08 17 views
2

就像很多人一樣,我試圖在服務器端遠程git上創建post-receive鉤子。下面是我的代碼:Git Hook'post-receive` with`git pull`通過命令行運行良好,但在自動掛鉤上返回空字符串

cd [LIVE SITE DIR] && git pull origin master | wall

我已經加入了wall,以便它可以播放,我可以收到通知。我注意到的一件事是當我運行./post-receive時,它一切正常。

Broadcast message from root (Tue Oct 8 14:58:13 2013): 

Updating 7ebd925..1a25791 
Fast-forward 
html/header.php | 2 +- 
1 file changed, 1 insertion(+), 1 deletion(-) 

但是,當我試圖做一個git push./post-receive好像是叫,但我收到了以下空廣播:

Broadcast message from root (Tue Oct 8 14:53:32 2013): 

我曾嘗試包括pwdls命令進入post-receive和對於這兩種情況一切正常。除了git pull它似乎返回一個空的輸出。

有過。在SO,但無濟於事提供的所有建議:(任何幫助或建議,非常感謝了。

謝謝!

回答

1

這個問題似乎是因爲.git文件之一是HEAD具有root作爲文件所有者。上面的shell腳本是使用其他用戶執行的。

7

確保您post-receive鉤取消設置GIT_DIR,或者它仍將指掛鉤的混帳回購協議,而不是你剛纔cd在直播現場的混帳回購協議

cd [LIVE SITE DIR] 
unset GIT_DIR 
git pull 

或者:

cd [LIVE SITE DIR] 
env -i origin master 

或者:

cd [LIVE SITE DIR] 
git --git-dir=[LIVE SITE DIR]/.git pull 
+0

感謝您的嘗試。嘗試了以上所有內容,但是所有內容都會在自動調用時返回空字符串。 –

+0

@HeruS好的。獨立於廣播問題,我仍然建議不要設置'GIT_DIR'。現在,牆是正確的工具?請參閱http://serverfault.com/a/390417/783。 rwall是更好的選擇嗎?獨立於「wall」或「rwall」的 – VonC

+0

不知何故git pull仍然沒有執行。 :( –