我有大约 20 个不同的存储库。许多是独立的并作为库编译,但其他一些在它们之间具有依赖关系。依赖解析和分支很复杂。
假设我有一个只聚合所有其他存储库的超级项目。它专门用于运行测试——这里没有真正的开发。
/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
and 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's git-repo
,git-slave
等。
对于这样一个复杂的项目,我该如何管理持续集成?
编辑
真正的问题是如何在不必模拟所有其他依赖项目的情况下运行测试?特别是当所有项目可能使用不同的版本时。 在 git 子模块中提交后触发 Jenkins 测试