首页 > 解决方案 > 跨源分支 git repo(Bitbucket 和 GitHub)

问题描述

我正在寻找一些关于如何最好地跨几个存储库管理版本控制的建议。首先,让我解释一下上下文;

目前的情况

  1. 有一个 Bitbucket 存储库 (repo-a),由我们的一位客户拥有和管理。我们有一个用户可以访问这个 repo。此存储库通过 Bitbucket 管道管理对登台和实时环境的部署。
  2. 有一个 GitHub 存储库 (repo-b),由我们拥有和管理。所有开发人员都可以访问此存储库,我们拥有完全控制权。
  3. 有一个 Jenkins CI 服务器可以访问我们的 GitHub 存储库。我们可以完全控制它,并使用它将代码从 repo-b 推送到开发环境。

问题

到目前为止,此设置运行良好(尽管有点笨拙),因为我们的团队是唯一在代码库上工作的人。我们已经向 repo-b 添加/删除了开发人员,非常高兴地提交了代码并通过 Jenkins 部署到我们的开发环境中。在发布工作以供客户审查(并推出到现场)时,我们已将代码提升并转移到 repo-a 的结帐中并推送它,然后部署 Bitbucket 管道。到目前为止,一切都很好。

但是,现在客户希望也能够处理 repo-a 中的代码。这会在我们提升和转移时提出一个问题,因此在我们复制代码时冒着吹走更改的风险。另外,取消换档是一种我们宁愿避免的糟糕做法。

为什么不直接将我们的内部开发人员添加到 repo-a 中?

这将是最好的情况,但不幸的是,由于某些原因,这不是一个合适的情况。首先,客户犹豫是否向我们所有团队以及我们雇用的任何承包商或自由职业者开放对 repo-a 的访问权限,尤其是像提交错误分支这样简单的事情可能会导致部署到生产环境。其次,我们不希望与我们的客户一样开放厨房,只允许访问原子提交历史。理想情况下,我们希望他们只在我们将工作块滚动到登台或生产环境时访问单个压缩提交或 PR。

分叉肯定是要走的路吗?

如果两个存储库都在 GitHub 上,那么过程会很简单。我们只需将 repo-a 分叉到 repo-b,处理我们的更改,然后发布 PR 将完成的工作阶段拉入 repo-a。漂亮而简单,完全跟踪和完全可管理。

所以这一切都归结为几个简单的问题......有没有办法在两个不同的版本控制系统中实现类似的东西?例如,我们可以从 Bitbucket 分支到 GitHub 吗?我们可以创建一个具有不同远程来源的分支,我们可以合并到该分支中,并且可以在 repos 之间双向合并吗?

理想的情况是这样的;

  1. 内部团队在 GitHub 上的 repo-b 中处理代码,这是 Bitbucket 上 repo-a 的一个分支。代码通过 Jenkins 或 GitHub 操作推送到开发环境。
  2. 当一个阶段的工作完成时,会提出一个 PR,希望合并从 repo-b 分支到 repo-a 的更改。
  3. 此 PR 由有权访问 repo-a 和 repo-b 的内部开发人员审核。它们在 PR 中合并并推送到 repo-a,然后通过 Bitbucket 操作部署到阶段和/或生产环境。

不过,我对此还有一个额外的问题 - 如何将 repo-a 中的提交另外撤回到 repo-b?

对我来说,这一切听起来很糟糕,充满了危险。希望有更强大的 git-fu 的人可以提供一种很好、干净的方式来完成这件事!

标签: gitgithubbitbucketdevops

解决方案


推荐阅读