Github flow将功能分支与单个产品相关联,但没有理由无法实现。您的工作流程选项取决于您部署应用程序的方式。考虑“MyApp”,它具有三个组件服务:
MyApp
|- ServiceA
|- ServiceB
|- ServiceC
如果您可以ServiceA
独立于ServiceB
and进行部署ServiceC
,更重要的是部署所有这些独立于 MyApp 包含但不存在于任何Service*
存储库中的代码,那么只需将您首选的工作流 Github 流应用到每个存储库和团队。
如果服务紧密交织在一起,并且部署ServiceA
必然需要部署,ServiceB
或者更重要的是,MyApp
代表每次一个Services*
存储库执行时都必须推进的大量脚手架或路由代码,那么您可能需要类似submodules或subtree的东西。在该模型中,您将拥有一个 Github 流程,以及 #4 和 #5 之间的额外步骤,即在部署之前收集服务的子模块(或子树)更新。我会避免没有子树或子模块的存储库嵌套,除非你(和你的团队)非常了解 git。
写完所有这些,我建议您深入了解拆分应用程序的动机。它有其优点和成功的工作流程,但它们是有代价的:获得历史的“全貌”更加困难;在某些情况下,使用以下工具进行调试可能会更加困难git bisect
;每个新开发人员都必须先了解您的 git 基础架构,然后才能熟练使用您的代码库。这些不是放弃计划的理由,只是值得深思。