在不同花瓣上进行更改

由于无法以原子方式一次性向多个 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。
  • 集成 - 内部集成代码库。

柔和过渡

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

请按照以下步骤进行软转换:

  1. 提交 D 中的更改,以引入新接口,而不破坏 P 使用的旧接口。
  2. 等待 D 的新修订版本滚动到集成代码库中。
  3. 迁移 P 以使用新界面。
  4. 等待 P 的新修订版本滚动到集成代码库中。
  5. D 中发布清理更改,以移除旧接口。

通常,对 FIDL 协议的更新可以通过软转换实现。

硬转换

对于某些更改,打造柔性过渡可能困难或不可能。对于这些更改,您可以进行硬转换。在硬转换中,您将对 D 进行重大更改并手动更新 P

请注意,为了防止意外损坏清单内容,Gerrit 配置为不自动对修改清单文件的更改执行 rebase 操作。您必须在合并之前手动执行 rebase 操作,以便提交内容简直是快进。

进行硬转换比软转换压力更大,因为您的更改会阻止 D 中的其他更改在步骤 1 到第 2 步期间在独立项目中使用。

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