复杂的git工作流



我有一个场景,在这个场景中,我必须在多个服务器上维护多个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应用捆绑包。

最新更新