在公司,我们有一个大型存储库 BIG-REPO 。我为所有应用程序,服务工具等存储代码库。现在我的团队正在开发 Web应用程序A 。此应用程序依赖于 BIG-REPO 的其他部分。因为在我们的团队中,我想用拉取请求引入代码审查,并且还为我们的应用程序提供稳定的分支,我想出了这个工作流程:
我看到的选项是:
a)将主合并到 WebAppA 中。缺点:我有合并提交。我还不确定当我需要将 WebAppA 合并回 master 时会发生什么(例如,一旦里程碑完成,就会发生)。它会好吗/安全吗?它在历史上看起来很尴尬:首先我将 master 合并到 WebAppA ,然后我做其他事情。
b)将 WebAppA 重新定位为主。根据我对git如何工作的理解,这是一场灾难,因为它将不断改变 WebAppA 历史。因为这是共享分支,所以它会破坏一切(Golden Rule of Rebase)。
我没有任何其他想法。你能建议吗?
答案 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 及其功能分支的历史记录,对于任何必须与这些分支机构合作的人来说都是一件痛苦的事。