8

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

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

我知道测试昨天有效,今天失败了。

有时我使用 git-bisec,但这仅适用于一个 git repo。

两个 git repos 中的更改通常会导致测试失败。

我可以自己编写一个循环遍历我的 N git repos 的脏脚本,但在这样做之前,我想知道专家将如何解决这个问题。

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

4

2 回答 2

3

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

于 2016-12-13T14:34:46.963 回答
3

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

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

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

于 2016-12-15T09:30:06.270 回答