2010-11-27 57 views
1

我的目錄結構是:如何正確使用post-receive hook?

〜/ parent.git/git的/掛鉤/後收到

的,收到後鉤的樣子:

#!/bin/sh 
git checkout -f 

當我推入父。 git,腳本不運行。我無法弄清楚這個問題,因爲互聯網的每一部分都說這應該起作用。

我chmod'd後收到,所以我知道這不是問題。任何幫助深表感謝。

+0

如果您在推送到非裸倉庫後嘗試刷新簽出的文件,請參閱[「爲什麼我不會在」git push「?」(https:// git.wiki.kernel.org/index.php/GitFaq#Why_won.27t_I_see_changes_in_the_remote_repo_after_.22git_push.22.3F)。它建議更安全的[更新後腳本](http://utsl.gen.nz/git/post-update)。問題可能是由於cwd是存儲庫目錄本身並且GIT_DIR設置爲相同的路徑。可能相關:[SO問題5531309](http://stackoverflow.com/q/5531309/193688)。 – 2011-04-04 04:20:55

回答

1

如果我有一個猜測,我會說推送用戶沒有權限執行該目錄中的結帳。我建議你做的是建立最小的工作腳本,並從那裏建立。 IE瀏覽器,而不是:

git checkout -f 

務必:

echo "Got here" > /tmp/git_push_log 

然後嘗試:

echo "Got here" > pwd_test 

要檢查什麼目錄,這是在工作和需要哪些權限,您的假設。

2

正如克里斯提到你似乎有同樣的問題reset hard on git push

具體用的鉤運行CWDGIT_DIR集到.git目錄。這會導致在.git目錄中運行的結帳命令以及有關被覆蓋的正常錯誤。

如果您在遠程.git dir中執行ls,您應該在該處找到完整的結帳。

解決這個問題的最簡單的方法是對檢出命令前面指定GIT_WORK_TREE:

GIT_WORK_TREE=/my/git/checkout git checkout -f 

腳本克里斯聯(http://utsl.gen.nz/git/post-update)應該利用這個以及其他一些潛在問題的照顧。

+0

不知道這是如何歷史上,但現在我試着用git 2.0.0,至少預先提交與'CWD'設置爲回購根。 – Ilkka 2014-06-06 09:33:46