Gerrit 中的依附變更

Fuchsia 專案包含許多獨立的存放區。為了讓跨存放區的變更更容易,Fuchsia 的 Gerrit 主機支援在不同存放區的變更之間宣告依附元件。在提交前測試和提交變更時,系統會尊重依附元件。

用量

如要宣告 CL 對其他 CL 的依附性,請在提交訊息中加入 Depends-on 頁尾。CL 可以有多個依附元件,涵蓋不同的存放區和 Gerrit 主機。

格式:

[foo] Do something

Depends-on: Idc82d1483b4be8480aaa87bb48af8d03cfa45858
Change-Id: Ibbf13ab7de7e4444a2dc1f52f3cad97e76c7721d

規格

  • 每個 Depends-on 頁尾的值必須是 Gerrit 變更 ID。系統只接受變更 ID,不接受整數變更編號。
  • 如果依附元件位於與目前 CL 不同的 Gerrit 主機上,則必須將主機指定為前置字串 (例如turquoise-internal:I9916ccaa4b95b6e9babdee33014fa6bd3d478f2e)。
  • Depends-on 頁尾必須位於提交訊息的最後段落,且 Depends-onChange-Id 頁尾之間不得有空白行。
  • Depends-on 頁尾會區分大小寫,且不接受其他拼法。
  • 如果 Depends-on 頁尾參照不存在的 CL,系統會在 CL 中新增註解。

行為和基礎架構互動

  • 提交阻斷:如果 CL 含有 Depends-on 頁尾,則必須提交所有依附元件才能提交 CL,屆時「CL 依附元件檢查器」機器人會投票為「Dependencies-Satisfied +1」,讓 CL 可提交。
  • 提交前測試:為了簡化測試,如果 CL A 依賴 CL B,則 CL B 也會在 CL A 提交前測試中修補至結帳系統。Depends-on 頁尾也會遞迴處理,以便遵循傳遞式依附元件。
  • 自動提交:如果 CL 上傳工具使用 Fuchsia 的自動提交功能,這個系統會運作得最順暢。如果在含有 Depends-on 頁尾的 CL 鏈結中啟用自動提交功能,這些 CL 就會以正確的順序抵達,無須手動介入。

循環相依 (原子變更)

如何使用循環相依性:

  1. 請上傳兩個 CL,其中 Depends-on 頁尾彼此互相參照。
  2. 取得兩份 CL 的必要核准。
  3. 準備好發布 CL 時,請在兩個 CL 上設定 Fuchsia-Auto-Submit +1

CL 依附元件檢查機器人會處理其餘的部分,對兩個 CL 執行提交前的模擬測試,並在模擬測試通過後同時核准。

接著,自動提交功能會將 CL 和 Roller 提交至 integration.git,並在單一提交中發布 CL。