复杂的 git 工作流程

时间:2020-12-22 15:36:18

标签: git

我有一个场景,我必须在未连接在一起(永远不会连接在一起)的多个服务器上维护多个 git 存储库(每个存储库都有多个分支)。

为了简化思路,我将两个主机标识为 A 和 B。 开发人员在 A 上执行工作。他们正在推送代码,创建分支等。 开发人员在 B 上执行工作。他们在推送代码,创建分支等等。

最初,B 是从 A 镜像而来的。所以它们的开始是相同的。

现在我的任务是从 A 获取代码并将其带到 B。 同样,从 B 到 A。这将持续发生。

鉴于以下事实,我不确定如何实现这一点:

  • 当我在 A 的网络上时,我无法访问 B。
  • 当我在 B 的网络上时,我无法访问 A。
  • 开发人员将在 A 和 B 上创建新分支
  • 开发人员会将代码推送到 A 和 B 上的同名分支中。
  • 还有很多其他我想不到的场景:(
    • 也许实施 PR - 但当我们需要“同步”时不会合并(在 A 和 B 上)

基本上,我的任务是与两个开发人员团队一起开发存在于两个不同网络上的同一个存储库,并持续“消除”它们之间的差异。

最初我研究了 git clone --mirror(和 git lfs fetch -all,因为 LFS 正在发挥作用),然后是 git push --mirror。这对于初始同步工作正常。但它不能用于维护。

我意识到这最终会以编程方式完成(这很好),但我什至不确定我应该采用什么样的流程。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在我看来,git bundle 可以解决一个场景。

<块引用>

有些工作流需要一个或多个开发分支 机器可以复制到另一台机器上,但两台机器不能 直接连接,因此交互式 Git 协议 (git, ssh, http) 不能使用。

您显然需要设置一些规则(例如限制历史重写),无论如何您都可以使用 git bundle verify 检查是否可以应用该包。