2012-07-24 284 views
1

GIT試圖實現工作流的新手。如何強制GIT post-receive hook不被客戶端執行

我們當地的辦公室設置使用與Apache,Linux等共享的Debian Samba磁盤。因此,我們克隆了w:/webs/site.com/site.git類型的「本地路徑」中的項目。這是BARE回購。

我們已經創建了一個bash腳本爲位於W A「後收到」掛鉤:/webs/site.com/site.git/hooks/post-receive至極我們以爲會被執行「 Linux的」蠢貨像`/home/samba/webs/site.com/hooks ......包括根據COMMITED分支條件腳本檢出類似:

GIT_WORK_TREE=/home/samba/webs/site.com/html git checkout -f $BRANCH 

的問題是,當我們從我們的tortoiseGIT本地複製到原始分支的掛鉤掛鉤失敗:

遠程:致命:無法切換到'C:/ Program Files (x86)/Git/home/samba/webs/site.com/html':沒有這樣的文件或 目錄w:/webs/site.com/site。 git

我們理解的意思是客戶端GIT正在執行WORK_TREE或整個掛鉤腳本。

問題是我們打算通過SSH和其他方式訪問回購站,因此如果我們使用Windows本地路徑,那麼當我們從非Windows本地網絡客戶端推送時,這些路徑會失敗。另一種方法可能是通過SSH即使在本地提交回購協議,但我們認爲這樣做效率很低,只會出現這個鉤子問題。

我們可以使用的任何建議和/或GIT變量可以兼容嗎?謝謝。

+0

由於鉤子的性質,windows客戶端無法執行鉤子,它是一個bash腳本,在Windows中沒有這樣的解釋器 – 2012-07-24 22:36:20

+1

客戶端通過GIT解釋器執行bash,所以它確實不是解決方法是使用git repos本身的相對路徑。回答如下: – luison 2012-07-25 17:38:18

+0

不知道,謝謝 – 2012-07-25 18:26:22

回答

2

該問題實際上與GIT_WORK_TREE的路徑而不是解釋器本身有關。

我們現在已經想通過使用:GIT_WORK_TREE =「../ html」可以完美地從Windows客戶端通過Samba或SSH訪問git通過Linux進行訪問。

顯然GIT 鉤其中git的存在版本庫的根目錄本身(未鉤目錄中的一個)內執行。

現在我們的「其他」問題與符號鏈接有關......如果推送過程是從Windows客戶端完成的,則符號鏈接將以自動生成(簽出)HTML目錄的形式出現在文件中,而不像原始符號鏈接那樣。

因爲這個原因,我們終於決定通過SSH訪問repos,即使本地。 ;(

+0

澄清... GIT和SVN都可以正確處理符號鏈接,在Windows客戶端中顯示爲文本文件的目標路徑,它們包含一個特殊的位,使它們能夠被正確地恢復,爲此,創建存儲庫(在SVN中導入)應該通過Linux客戶端或控制檯來完成 – luison 2012-08-01 13:04:55

+0

非常感謝!我從目錄本身執行! – 2014-01-20 16:02:48