由於無法一次將變更內容以原子方式提交至多個 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
,讓介面同時支援舊版和新版用戶端。舉例來說,如果您要取代函式,可以新增新版本,並將舊函式轉換為新函式的包裝函式。
請按照下列步驟完成軟性轉換:
- 在
D
中實施變更,以便引入新介面,且不會破壞P
使用的舊介面。 - 等待
D
的新修訂版本納入整合存放區。 - 遷移
P
以使用新介面。 - 等待
P
的新修訂版本納入整合存放區。 - 在
D
中完成清理變更,以移除舊介面。
一般來說,您可以透過軟性轉換來更新 FIDL 通訊協定。
硬轉
對於某些變更,建立軟性轉換可能會很困難或無法建立。針對這些變更,您可以進行硬轉換。在硬轉換中,您會對 D
進行重大變更,並手動更新 P
。
請注意,為避免資訊清單內容意外遭到覆蓋,Gerrit 會設為不會自動重新定義編輯資訊清單檔案的變更。您必須先手動重新設定基底,再進行合併,這樣提交內容才會是純粹的快轉。
硬轉移比軟轉移更費力,因為您的變更會在步驟 1 和 2 之間,防止 D
中的其他變更在依附專案中顯示。
只有 Google 開發人員可以進行硬轉換。請參閱內部說明文件瞭解操作方式。