Gerrit 中的依赖项更改

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-onChange-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 将以正确的顺序提交,而无需人工干预。

循环依赖项(原子更改)

如需使用循环依赖项,请执行以下操作:

  1. 上传两个 CL,其中 Depends-on 页脚相互引用。
  2. 获得两个 CL 的必要审批。
  3. 准备好提交两个 CL 后,请为它们设置 Fuchsia-Auto-Submit +1

CL 依赖项检查器机器人会处理其余事宜,对这两个 CL 执行提交前模拟运行,如果模拟运行通过,则同时批准这两个 CL。

然后,auto-submit 会提交 CL,而将 roller 添加到 integration.git 会在单个提交中滚动 CL。