2015-08-18 98 views
0

我有這樣的環境中發展網絡:的Git目錄和工作樹

服務器A

多個VM(每一個代表不同的項目)。它用於部署。

服務器B

主機每混帳裸倉庫

本地機器

每個開發人員克隆回購,本地工作,並逼退到服務器B裸回購。


問題是我需要在每個虛擬機(服務器A)有工作樹,但沒有git目錄。並保持與沒有工作樹的git目錄服務器B.

每次有人git push下載到存儲庫中,遠程工作樹(在服務器A)需要更新。


我想避免什麼?

我不希望在我的部署服務器(服務器A)中有一個完整的git目錄,因爲它有SSD磁盤,並且我需要很多(非常昂貴的)空間。


我的第一種方法

我的第一個方法是使用一個掛鉤,在服務器B 更新後的這基本上使得git archive.gz文件,並使用SSH密鑰,然後使用scp在服務器A中提取它。

PRO是易於實現的。

CON即使有人修改了單行,我也會傳輸每個存儲庫文件。


任何人都可以扔我任何想法?是否可以將GIT_WORK_TREE設置爲遠程位置?我通過SSH嘗試沒有成功。

在此先感謝。

回答

0

您可以檢出工作目錄到服務器B,並使用rsync將它們傳輸到虛擬機。

最近的git(自2.3.0以來,如果我理解正確的話)支持服務器上工作樹的自動更新(請參閱選項receive.denyCurrentBranch updateInstead),因此掛鉤只需要運行rsync。

+0

我終於在/ tmp工作樹中執行了'git checkout',然後在更新後的鉤子中執行了'rsync'。現在正常工作.. –