我在网络开发中有这个环境:
服务器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没有成功。
提前致谢。
答案 0 :(得分:0)
您可以将工作目录签出到服务器B,并使用rsync将它们传输到VM。
最近的git(从2.3.0开始,如果我理解正确的话)支持在服务器上自动更新工作树(请参阅选项receive.denyCurrentBranch to updateInstead),因此钩子只需要运行rsync。