我的目錄結構是:如何正確使用post-receive hook?
〜/ parent.git/git的/掛鉤/後收到
的,收到後鉤的樣子:
#!/bin/sh
git checkout -f
當我推入父。 git,腳本不運行。我無法弄清楚這個問題,因爲互聯網的每一部分都說這應該起作用。
我chmod'd後收到,所以我知道這不是問題。任何幫助深表感謝。
我的目錄結構是:如何正確使用post-receive hook?
〜/ parent.git/git的/掛鉤/後收到
的,收到後鉤的樣子:
#!/bin/sh
git checkout -f
當我推入父。 git,腳本不運行。我無法弄清楚這個問題,因爲互聯網的每一部分都說這應該起作用。
我chmod'd後收到,所以我知道這不是問題。任何幫助深表感謝。
如果我有一個猜測,我會說推送用戶沒有權限執行該目錄中的結帳。我建議你做的是建立最小的工作腳本,並從那裏建立。 IE瀏覽器,而不是:
git checkout -f
務必:
echo "Got here" > /tmp/git_push_log
然後嘗試:
echo "Got here" > pwd_test
要檢查什麼目錄,這是在工作和需要哪些權限,您的假設。
正如克里斯提到你似乎有同樣的問題reset hard on git push
具體用的鉤運行CWD
和GIT_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)應該利用這個以及其他一些潛在問題的照顧。
不知道這是如何歷史上,但現在我試着用git 2.0.0,至少預先提交與'CWD'設置爲回購根。 – Ilkka 2014-06-06 09:33:46
如果您在推送到非裸倉庫後嘗試刷新簽出的文件,請參閱[「爲什麼我不會在」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