我有一个场景,在这个场景中,我必须在多个服务器上维护多个git存储库(每个存储库都有多个分支(,这些服务器没有连接在一起(永远不会连接(。
为了简化这个想法,我将把两个主机标识为A和B。开发人员在A上执行工作。他们正在推送代码、创建分支等。开发人员在B上执行工作。他们正在推送代码、创建分支等。
最初,B是A的镜像,所以它们的开头是一样的。
现在我的任务是从A获取代码并将其带到B。同样,从B到A。这将持续发生。
我不确定如何实现这一点,因为事实上:
- 当我在A的网络上时,我无法访问B
- 当我在B的网络上时,我无法访问A
- 开发人员将在A和B上创建新的分支机构
- 开发人员将把代码推送到A和B上相同名称的分支中
- 再加上许多其他我想都想不到的场景:(
- 也许实现PR,但当我们需要";"同步">
基本上,我的任务是由两个开发团队开发存在于两个不同网络上的同一回购,并不断"消除"它们之间的差异。
最初,我研究了git clone --mirror
(和git lfs fetch -all
,因为LFS正在发挥作用(,然后是git push --mirror
。这在最初的同步中运行良好。但它不能用于维护。
我意识到这最终将以编程方式完成(这很好(,但我甚至不确定我应该采用什么流程来处理这样的事情。
谢谢你的帮助。
在我看来,这是一个可以用git bundle
解决的场景。
一些工作流要求一个或多个开发分支机器可以在另一台机器上复制,但这两台机器不能可以直接连接,因此可以使用交互式Git协议(git、ssh、http(不能使用。
您显然需要设置一些规则(如限制历史重写(,在任何情况下,您都可以检查是否可以使用git bundle verify
应用捆绑包。