git多仓协作问题以及解决方案

2020-07-25  本文已影响0人  刺猬窝窝头

多仓协作的问题

一个项目可能会由多个代码仓构成。如果这些代码仓之间没有依赖关系,那么除了操作上的不方便,也不会有其他问题。但是, 如果这几个代码仓之间有依赖关系,那么单纯使用git管理就会存在问题。

例如有两个代码仓,代码仓A是功能源码仓,代码仓B是测试用例仓。 那么,代码仓B的特性用例集B‘的执行,就依赖于代码仓A对应特性A’的功能代码提交; 只有同时提交或者已经提交了,相关用例才能够成功执行。现在问题来了, 要追溯一些历史问题,怎么样才能够使得两个代码仓都回退到一个匹配的提交点上,使得源代码和测试用例是匹配的?

解决方案

目前知道几种解决方案:

各个解决方法都有自己的特点和适用场景。

git submodule

有如下特点:

主要缺点:

适用场景:

git subtree

有如下特点:

主要优点:

主要缺点:

适用场景:

Google repo/manifest

主要特点是:

可以使用repo/manifest来解决有依赖关系的多仓协作的问题。

git mm/manifest

与Google repo/manifest相似, 解决问题的场景也是相同的。不同点在于, git mm是华为内部研发的, 使用golang开发的。

这一工具同时也带来了git工作流的变化,由原先典型的分布式工作流,变为了集中式工作流; 这一点的变化可能对提交门禁和流水线有影响。 下面附一张对比图。

slide-13.jpg
上一篇 下一篇

猜你喜欢

热点阅读