需要与主人

时间:2016-04-12 19:08:35

标签: git

在公司,我们有一个大型存储库 BIG-REPO 。我为所有应用程序,服务工具等存储代码库。现在我的团队正在开发 Web应用程序A 。此应用程序依赖于 BIG-REPO 的其他部分。因为在我们的团队中,我想用拉取请求引入代码审查,并且还为我们的应用程序提供稳定的分支,我想出了这个工作流程:

  1. 我们为应用程序分享了功能分支,让我们称之为 WebAppA 分支
  2. 每个开发人员都在为此应用程序开发一些功能。这样做时,他/她会从 WebAppA 创建一个分支。例如,我们有 WebAppAFeatureA WebAppAFeatureB 等。开发人员不断将他们的分支机构推向远程,并向 WebAppA 发布PR。我做代码审查&合并变更。此外,开发人员还通过重新定位到 WebAppA 来更新其功能分支。到目前为止还不错?
  3. 但是因为 WebAppA 依赖于其他团队开发的存储库的其他部分,我们有时需要合并他们的更改(已经在中)进入我们的 WebAppA 分支。现在问题是:如何安全地做到这一点?它甚至可能吗?
  4. 我看到的选项是:

    a)将合并到 WebAppA 中。缺点:我有合并提交。我还不确定当我需要将 WebAppA 合并回 master 时会发生什么(例如,一旦里程碑完成,就会发生)。它会好吗/安全吗?它在历史上看起来很尴尬:首先我将 master 合并到 WebAppA ,然后我做其他事情。

    b)将 WebAppA 重新定位为。根据我对git如何工作的理解,这是一场灾难,因为它将不断改变 WebAppA 历史。因为这是共享分支,所以它会破坏一切(Golden Rule of Rebase)。

    我没有任何其他想法。你能建议吗?

2 个答案:

答案 0 :(得分:2)

您是否考虑过Git子模块? https://git-scm.com/book/en/v2/Git-Tools-Submodules - 这将允许您将主服务器嵌套在WebAppA工作目录中(或反之亦然),而不会导致不断更改历史记录的灾难。

关于git历史记录的一个注释 - 它只跟踪更改的特定差异(git术语中的blob) - 因此,如果WebAppA中的某些内容发生更改,则只提交特定的“blob”数据,并且不会影响其他文件。

我强烈建议在BIG-REPO中拆分你的代码库以包含较小的项目作为他们自己的repo,然后使用Submodules将它们“粘合”在一起。

希望这有帮助!

答案 1 :(得分:0)

除了拆分存储库并使用构建工具,语言工具或git子模块指定依赖项之外,您的解决方案(使用合并)似乎是最可能的。

双向合并可能看起来很尴尬,但在这种情况下你无法避免它们。

重新定位是不可取的,因为它不断重写 WebAppA 及其功能分支的历史记录,对于任何必须与这些分支机构合作的人来说都是一件痛苦的事。