git-平分,但对于 N 个回购

git-bisect, but for N repos

我们的软件是模块化的,我在一个项目中有大约 20 个 git 存储库。

如果测试失败,有时很难找到匹配的提交,因为有几个开发人员在处理这 20 个存储库。

我知道昨天的测试成功了,今天失败了。

有时我使用 git-bisec,但这只适用于一个 git 存储库。

两个 git 存储库中的更改通常会使测试失败。

我可以编写一个肮脏的脚本来循环我的 N git 个回购协议,但在这样做之前,我想知道专家们会如何解决这个问题。

我使用 Python、Django 和 pytest,但 AFAIK 这对这个问题来说无关紧要。

我个人更喜欢使用 repo tool 来管理复杂的项目。将这 20 个 repos 放在 manifest.xml 中,每次构建开始时创建补丁清单,如果构建失败,则执行 repo diff manifests 以查看更改的内容和位置。

有用于 "reverse dependency" CI 构建的 QA 工具类别。因此,每次进行较低级别的更改时,您的较高级别项目都会重建。在规模上,它可能是资源密集型的。

如果您停止处理 repo-to-repo 关系并开始遵循子组件的版本发布方法,那么整个 class 问题都会被消除。然后您可以跟踪较低级别依赖项的版本,并知道何时升级它损坏了。如果您想将其系统化,您的 CI 可以针对多个版本的依赖项进行构建。

Git 子模块完成对单个提交的跟踪,因此您再次决定何时合并来自较低级别的更改。 (值得注意的是,如果您只更新标记的发布提交,它也可以像发布版本一样使用。)