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



我在web开发中有这样的环境:

服务器

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

服务器B

托管所有git裸存储库

<<p> 本地机器/strong>

每个开发人员克隆repo,在本地工作,并将其推回服务器B裸repo。


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

每次某人git push访问存储库时,远程工作树(在服务器a中)需要更新。


我要避免什么?

我不希望在我的部署服务器(服务器a)上有一个完整的git目录,因为它有SSD磁盘,我会占用很多(非常昂贵的)空间。


我的第一个方法

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

优点是易于实现。

CON是我将传输每个存储库文件,即使有人修改了一行。


谁能给我点主意吗?是否可以将GIT_WORK_TREE设置为远程位置?我通过ssh尝试了,没有成功。

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

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

相关内容

  • 没有找到相关文章

最新更新