Fuchsia 项目包含许多单独的代码库。为了简化跨代码库更改,Fuchsia 的 Gerrit 主机支持声明不同代码库中更改之间的依赖项。在提交前测试和提交更改期间,系统会遵循依赖项。
用法
如需声明 CL 对另一个 CL 的依赖项,请在提交消息中添加 Depends-on
页脚。CL 可以有多个依赖项,这些依赖项跨越不同的代码库和 Gerrit 主机。
格式:
[foo] Do something
Depends-on: Idc82d1483b4be8480aaa87bb48af8d03cfa45858
Change-Id: Ibbf13ab7de7e4444a2dc1f52f3cad97e76c7721d
规范
- 每个
Depends-on
页脚的值都必须是 Gerrit 更改 ID。仅接受更改 ID,不接受整数更改编号。 - 如果依赖项位于与当前 CL 不同的 Gerrit 主机上,则必须将主机指定为前缀(例如
turquoise-internal:I9916ccaa4b95b6e9babdee33014fa6bd3d478f2e
)。 Depends-on
页脚必须位于提交消息的最后一段中,并且Depends-on
和Change-Id
页脚之间不得有空行。Depends-on
页脚区分大小写,不接受其他拼写方式。- 如果
Depends-on
页脚引用不存在的 CL,系统会向 CL 添加评论。
行为和与基础架构的互动
- 提交阻止:如果 CL 包含
Depends-on
页脚,则必须先提交其所有依赖项,然后“CL Deps Checker”机器人才能投票为 Dependencies-Satisfied +1,这时 CL 才可提交。 - 提交前测试:为简化测试,如果 CL A 依赖于 CL B,则在 CL A 的提交前测试中,CL B 也会被补丁到检出中。
Depends-on
页脚也会递归处理,以便遵循传递依赖项。 - 自动提交:如果 CL 上传工具使用 Fuchsia 的自动提交功能,此系统将发挥最佳效果。如果在包含
Depends-on
页脚的 CL 链上启用了自动提交功能,这些 CL 将以正确的顺序提交,而无需人工干预。
循环依赖项(原子更改)
如需使用循环依赖项,请执行以下操作:
- 上传两个 CL,其中
Depends-on
页脚相互引用。 - 获得两个 CL 的必要审批。
- 准备好提交两个 CL 后,请为它们设置 Fuchsia-Auto-Submit +1。
CL 依赖项检查器机器人会处理其余事宜,对这两个 CL 执行提交前模拟运行,如果模拟运行通过,则同时批准这两个 CL。
然后,auto-submit 会提交 CL,而将 roller 添加到 integration.git 会在单个提交中滚动 CL。