變更各種花瓣

由於無法一次將變更內容以原子方式提交至多個 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 會設為不會自動重新定義編輯資訊清單檔案的變更。您必須先手動重新設定基底,再進行合併,這樣提交內容才會是純粹的快轉。

硬轉移比軟轉移更費力,因為您的變更會在步驟 1 和 2 之間,防止 D 中的其他變更在依附專案中顯示。

只有 Google 開發人員可以進行硬轉換。請參閱內部說明文件瞭解操作方式。