Fuchsia 專案包含許多獨立存放區。為簡化跨存放區的變更作業,Fuchsia 的 Gerrit 主機支援宣告不同存放區中變更之間的依附元件。在預先提交測試和提交變更期間,系統會遵守依附元件。
用量
如要宣告 CL 對另一個 CL 的依附元件,請在提交訊息中加入 Depends-on
頁尾。一個 CL 可以有多個依附元件,涵蓋不同的存放區和 Gerrit 主機。
格式:
[foo] Do something
Depends-on: Idc82d1483b4be8480aaa87bb48af8d03cfa45858
Change-Id: Ibbf13ab7de7e4444a2dc1f52f3cad97e76c7721d
系統也接受 Depends-On
(「o」大寫) 的拼法。
規格
- 每個
Depends-on
頁尾的值都必須是 Gerrit 變更 ID。系統只接受變更 ID,不接受整數變更編號。 - 如果依附元件位於與目前 CL 不同的 Gerrit 主機上,則必須將主機指定為前置字元 (例如
turquoise-internal:I9916ccaa4b95b6e9babdee33014fa6bd3d478f2e
)。 Depends-on
頁尾必須位於提交訊息的最後一段,且Depends-on
與Change-Id
頁尾之間不得有空白行。Depends-on
頁尾會區分大小寫,只有在以Depends-on
或Depends-On
形式大寫時才會辨識。- 如果
Depends-on
頁尾參照不存在的 CL,系統會在 CL 中新增註解。
基礎架構的行為和互動
- 禁止提交:如果 CL 含有
Depends-on
頁尾,必須先提交所有依附元件,才能提交該 CL。屆時,「CL Deps Checker」機器人會投下 Dependencies-Satisfied +1 票,讓 CL 可供提交。 - 預先提交測試:為方便測試,如果 CL A 依附於 CL B,則 CL B 也會修補到 CL A 的預先提交測試結帳程序中。
Depends-on
頁尾也會以遞迴方式處理,因此會遵守遞移依附元件。 - 自動提交:如果 CL 上傳工具使用 Fuchsia 的自動提交功能,這個系統就能發揮最大效益。如果啟用自動提交功能,系統會依正確順序提交含有
Depends-on
頁尾的 CL 鏈結,不需手動操作。
循環依附元件 (不可分割的變更)
如要使用循環依附元件,請按照下列步驟操作:
- 上傳這兩個 CL,並在
Depends-on
頁尾中互相參照。 - 取得這兩項 CL 的必要核准。
- 準備好要提交 CL 時,請在兩個 CL 上設定 Fuchsia-Auto-Submit +1。
CL Deps Checker 機器人會負責其餘作業,對兩個 CL 執行預先提交的試執行,並在試執行通過時同時核准兩者。
然後,自動提交功能會提交 CL,而 roller 則會將 CL 併入 integration.git 的單一提交中。