在不同花瓣上进行更改

由于无法将更改一次性原子提交到多个 Git 代码库,因此开发者必须仔细协调影响多个花瓣的更改。

例如,如果 Fuchsia 树中的 API 或 ABI 更改会影响 Flutter 或 Go 中的调用方,则需要进行软过渡(首选)或硬过渡

请注意,某些花瓣可能不在常规 Fuchsia 结账范围内。例如,虽然 Go 运行时属于 third_party/go,但 Fuchsia SDK 的其他使用方可能在其他位置开发(例如,Flutter Engine 是在 GitHub 上开发的)。

术语

  • D - Fuchsia 树中使用的项目。
  • P - Fuchsia 树中使用的另一个项目,对 D 有直接依赖项。例如,D 可能是 Fuchsia,P 可能是 Topaz 或 Experiences。
  • integration - 内部集成仓库。

柔和过渡

若要对多个项目进行更改,首选方法是使用软过渡。在软过渡中,您可以对 D 进行更改,使接口同时支持旧版和新版客户端。例如,如果您要替换某个函数,可以添加新版本,并将旧函数转换为新函数的封装容器。

请按照以下步骤实现平滑过渡:

  1. D 中完成更改,引入新接口,同时不会破坏 P 使用的旧接口。
  2. 等待 D 的新修订版本集成到代码库中。
  3. 迁移 P 以使用新接口。
  4. 等待 P 的新修订版本集成到代码库中。
  5. D 中提交了清理更改,以移除旧接口。

通常,可以通过软过渡来更新 FIDL 协议。

硬过渡

对于某些更改,很难或根本无法实现平滑过渡。对于这些更改,您可以进行硬转换。在硬转换中,您会对 D 进行破坏性更改,并手动更新 P

请注意,为防止意外覆盖清单内容,Gerrit 配置为不会自动对修改清单文件的更改进行重新基准。您必须先手动重置基准,然后才能合并,这样提交内容才会纯粹快进。

进行硬转换比进行软转换更费心,因为您的更改会阻止 D 中的其他更改在第 1 步和第 2 步之间在依赖项项目中生效。

只有 Google 开发者可以进行硬转换。如需了解相关说明,请参阅内部文档。