我想要在Windows上獲得一個git post-receive鉤子。Git - post-receive鉤子不能在遠程窗口服務器上工作
我使用Git 1.7.9(Msysgit),並且在本地有一個回購站,在遠程服務器上有一個回購站。我可以獲取,提交,推送等。我已經設置了一個post-receive鉤子,它應該將文件檢出到一個工作文件夾中(部署過程的一部分),但似乎不起作用。
這是我做的:
- 更改文件,舞臺和它承諾
- 推送到遠程服務器 - 成功
- 希望看到的回聲 - 看不到迴音
- 檢查服務器上的工作文件夾 - 最新文件不存在
- 登錄到服務器並手動運行掛接腳本 - 將最新文件簽出到工作文件夾中。
我改變了鉤子,所以除了回顯信息之外,它什麼都不做,我已經讀過,我應該在推送後在控制檯中看到它。但是這並沒有顯示出來,所以我只能假設這個鉤子沒有被解僱。
我推送HTTP服務器處理請求的服務器上的git dot aspx,並通過gui在本地進行注入。之後,我嘗試了Bonobo,當通過gui或bash控制檯進行推送時,鉤子不起作用。
我假設有人有這個工作的地方,但經過兩天尋找所有我找到的解決方案沒有幫助或沒有回答同樣的問題的人。
(我是一個git新手btw)。
乾杯。
更新
我開始認爲這可能是做的權限 - 而Unix許可,而不是NTFS。當@eis提到我使用NTFS的權限時。但經過更多的挖掘,似乎Windows上的Git仍然檢查Unix文件權限。
所以我懷疑這個問題是post-receive文件不可執行,因爲當我做一個ls -o
它是-rw-r-r--(我相信)。如果我嘗試通過bash和chmod 777 post-receive
進行更改,那麼執行ls -o
的權限是相同的。
奇怪的是,只要我編輯後接收(與記事本+ +)的執行位被刪除。 (我的測試腳本以.bat結尾,雖然保留其執行位...)
順便說一句,我登錄的用戶是文件的所有者(根據ls -o
),但我不能設置權限。
現在開始變得非常困惑。我錯過了真正明顯的東西嗎?
更新2
無論chmod 777 post-receive
也不chmod a+x post-receive
工作。我拿了一個新的乾淨的post-receive文件,將它上傳到服務器並檢查了權限並執行了。如果我在Windows中重命名該文件(以刪除示例),則執行將被刪除。如果我用bash與mv
執行保留。 但是,無論何時編輯文件(在Windows中或在vi中使用bash),然後執行都會被刪除。
所以,現在的問題是爲什麼當我編輯文件時刪除了執行位?
希望這是最後一關,它不執行的原因...
你確定你的腳本是正確的,它執行?你有沒有在那裏登錄?怎麼樣git-dot-aspx,它有沒有任何日誌? – vissi 2012-02-23 15:38:13
當我登錄到服務器並通過bash控制檯手動運行時,它按預期方式運行(即回顯並簽出一些文件)。這告訴我腳本很好。然而,當我推到這個回購它不開火 - 我沒有看到回聲和文件沒有簽出。這告訴我腳本沒有被調用。 至於原木。事件查看器中沒有任何內容,找不到任何gitdotaspx日誌,Bonobo有日誌但沒有錯誤。 – Jag 2012-02-23 16:00:10
它應該起作用,並且無論您使用哪個客戶端都無關緊要。 你可以檢查的幾件事: - 腳本中的shebang行 - 它是否指向有意義的東西?腳本是否使用那裏提到的shell? - 是否爲腳本正確設置了執行權限,用戶runnig git repo是否具有正確的權限? - 你的腳本結尾是否正確,對嗎? (雖然你會看到一個關於這個的錯誤) – eis 2012-02-23 16:52:19