2011-03-07 65 views
2

我已經習慣使用Github作爲備份或中央存儲庫,並在本地進行開發和測試。Git遠程測試

現在我有一個遠程測試機器,並希望能夠推送到遠程的本地提交,使得遠程工作目錄更新,允許我對內容運行測試。

1)我發現設置遙控器的大多數指令是使用--bare init。據我所知,這意味着遙控器缺少工作目錄並接受推送。在嘗試推送時,設置不帶--bare的遙控器會觸發錯誤。我如何完成上述工作流程?

2)這個工作流程甚至是一個好主意嗎?除了裸回購之外,我是否應該在遠程機器上安裝測試回購站。我把我從開發推到裸回購,然後,當我準備測試時,我從裸回購進入測試回購。

萬一它很重要,我問一個Rails項目,但我沒有標記這個問題,因爲我不明白爲什麼會這樣。

回答

4

我建議去一個裸倉庫進行推送,第二個倉庫會從測試運行的地方抽取它。這會更容易理解,而且當您決定劃分測試環境並重新創建測試環境時,您不必小心。如果它們在同一臺服務器上,測試回購可以爲中央測試回放設置「備用」,因此對象不會被存儲兩次(使用git clone --shared創建)。

即使使用此設置,您也可以輕鬆地自動運行測試。只需在中央存儲庫中安裝post-receive或post-update鉤子,即可運行測試。在git源代碼中甚至有現成的實現contrib/continuous,您可以根據自己的需求進行調整。

這並不是說您無法設置工作目錄的推送庫。 Git不允許你推送到簽出的分支(因爲它不知道如何在推送過程中更新它,以後不知道如何更新),但是可以通過使用「分離的HEAD」來解決這個問題。但是,如果您決定重新構建測試環境,那麼您會冒着意外刪除重要數據的風險。

0

我們在我們的項目中做的方式是爲每個測試服務器(staging,test,qa)都有一個單獨的分支。當您想將某些更改部署到某個服務器時,只需將它們合併到該服務器的特定分支中,然後使用Capistrano進行部署即可。

1

在大多數情況下,您不想推入非裸倉庫。原因是,推動只更新歷史,而不是工作目錄;這在git FAQ中有解釋。

所以是的,你的第二個建議就是要走的路。你甚至可以使用post-update hook來自動更新你的測試庫