谷歌自一段时间以来一直在Android上下文中推广repo,并已被其他与Android不相关的其他项目采用。

在Google的操作系统中,引入了紫红色的Jiri

这两个工具的背景是什么?
如果他们不能解决相同的问题,那么他们的目标是什么?

最佳答案

我到目前为止的经验是jiri允许您级联依赖项,因此这比Repo进一步(后者是you can include其他 list ,但是以fetch-> include方式级联它们可能会比较棘手)。

Repo允许您设置一个根目录 list ,该 list list 涵盖了几乎所有项目,并且允许本地包含。每个项目都是一个独立的git存储库。单个 repo list 是一个独立的实体,它本身描述了整个项目结构。

Jiri允许您组合多个 list 。每个“子存储库”都可以定义自己的git存储库结构。

在顶层 list ( checkout list 或.jiri_manifest)中,指定要包括的项目 list 。然后,每个项目 list 都可以指定其自己的依赖项。这是fuchsia项目的一些实例;看一看fuchsia list 文件:它从topaz项目中提取manifest/topaz,该项目又在特定的GIT SHA上导入manifest/peridot作为其自己的依赖项。

您无法使用repo轻松创建这种类型的级联依赖关系,但这里也有一个缺点:jiri为您提供了很多灵活性,但可能会带来维护负担,尤其是在某个时候某些代码最终取决于相同的子组件,但具有不同的SHA(并且由于多种原因,您可能最终会遇到这种情况)。

无论您的项目有多复杂,我通常都会建议您使用repo。对于大型项目(Android,集成了1100多个项目),它具有良好的建立和可靠的记录记录。 Jiri在纸面上看起来不错,但如果您不及时解决依赖性问题,可能会适得其反。

09-04 01:49
查看更多