我有大约20个不同的代码库。许多是独立的,编译为库,但其中一些之间存在依赖关系。依赖关系解析和分支很复杂。
假设我有一个“超级项目”,它仅汇总所有其他代码库。它专门用于运行测试--没有实际开发在这里进行。
现在,为了针对每个具体的功能或修复进行开发(
当实施涉及功能分支、热修复分支、发布分支等常见git工作流时,这变得更加复杂和棘手。我被建议使用(或不使用)
假设我有一个“超级项目”,它仅汇总所有其他代码库。它专门用于运行测试--没有实际开发在这里进行。
/superproject [master, HEAD]
/a [master, HEAD]
/b [master, HEAD]
/c [master, HEAD]
/...
现在,为了针对每个具体的功能或修复进行开发(
a
),特别是其中一些需要特定版本的项目才能编译或运行的功能(b v2.0
和c 3.0
),我必须创建一个新的分支:/superproject [branch-a, HEAD] <-- branch for 'a' project
/a [master] <-- new commits here
/b [v2.0]
/c [v3.0]
对于b
,可能需要其他东西,比如a v0.9
和c v3.1
:
/superproject [branch-b, HEAD] <-- branch for 'b' project
/a [v0.9] <-- older version than 'a'
/b [master] <-- new commits go here
/c [v3.1] <-- newer version than 'a'
当实施涉及功能分支、热修复分支、发布分支等常见git工作流时,这变得更加复杂和棘手。我被建议使用(或不使用)
git-submodules
, git-subtree
, google的git-repo
, git-slave
等。如何管理如此复杂的项目的持续集成?编辑:如何在不模拟所有其他依赖项目的情况下运行测试?特别是当所有项目可能使用不同版本时。在git子模块提交后触发Jenkins测试