在具有多个子模块的项目中实现git flow的最佳方法是什么

时间:2019-04-09 00:57:59

标签: git git-submodules git-flow

我们已经构建了一个Asp.net核心微服务项目,并将代码组织到一个超级项目和多个Git子模块中(每个微服务是一个子模块)。现在,我们要开始使用Git Flow工作流程。

初始化gitflow的最佳方法是什么?我们是否需要每个子模块一个git流程,或者我们应该在超级项目级别拥有一个全局git流程?

谢谢!

1 个答案:

答案 0 :(得分:0)

readium/readium-js-viewer这样的项目(使用子模块)考虑使用git flow,并在issues 392中进行了讨论。

使用git flow涉及将每个命令分解为等效的Git,用作:

git submodule foreach —recursive 'git checkout develop'

但是(在本文档中):

  

但是,由于以下几个原因,该工作流程却出现了一些问题。

     
      
  • git-flow工具(本质上是调用命令行git例程的bash脚本)存在许多错误。
      最重要的是,如果合并或发布过程中出现任何问题,则bash脚本只会无声地失败-实际上实际上不起作用,并且在不正确的情况下经常报告成功。
  •   
  • 总体而言,Git在使用子模块方面有些脆弱。例如,如果子模块的结构发生了变化(例如文件夹结构发生了变化),那么合并会导致新分支创建失败,因为git不知道如何正确删除过时的分支片段。
      废弃的碎片需要手动删除。
  •   
  • 对于我们相对较小的项目(例如,与Adobe的Creative Suite,Eclipse和其他大型项目相比),git-flow工作流似乎是过大的。
      发布分支工作流程的一般目的是测试和合并一个复杂的项目。如果发现问题,则可以解决这些问题,并将结果推后发展。
      在实践中,我们很少会在RC分支中遇到足够严重的问题以至于无法解决并重新合并。相反,我们只记录一个问题,并计划在下一个版本中对其进行修复。
  •   
     

因此,使用完整的git-flow工作流程-工具和工作流程本身-似乎都不适合Readium。
  因此,我们建议Readium采用类似于git-flow的工作流程,但应简化以适应我们的需求

因此可以使用git submodule foreach —recursive完成分支的使用,...,但是您可能希望使所述分支工作流程尽可能简单。