Git目录和工作树在不同的服务器

时间:2015-08-18 23:22:19

标签: git ssh web-deployment

我在网络开发中有这个环境:

服务器A

多个VM(每个VM代表一个不同的项目)。它用于部署。

服务器B

托管每个git裸存储库

本地计算机

每个开发人员克隆存储库,在本地工作,然后回送到服务器B裸存储库。

问题是我需要在每个VM(服务器A)中都有工作树,但是没有git目录。并维护服务器B中没有工作树的git目录。

每次有人git push到存储库时,远程工作树(在服务器A中)都需要更新。

我想避免什么?

我不想在我的部署服务器(服务器A)中使用完整的git目录,因为它有SSD磁盘,而且我占用了很多(非常昂贵的)空间。

我的第一个方法

我的第一种方法是在服务器B中使用更新后的钩子,它基本上将git archive转换为.gz文件,并使用scp ssh密钥然后在服务器A中提取它。

PRO是易于实施的。

CON即使有人修改了一行,我也会转移每个存储库文件。

任何人都可以告诉我任何想法吗?是否可以将GIT_WORK_TREE设置为远程位置?我试过通过ssh没有成功。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以将工作目录签出到服务器B,并使用rsync将它们传输到VM。

最近的git(从2.3.0开始,如果我理解正确的话)支持在服务器上自动更新工作树(请参阅选项receive.denyCurrentBranch to updateInstead),因此钩子只需要运行rsync。