貢獻變更

本指南說明如何將貢獻提交至 Fuchsia 專案。

Fuchsia 會透過 Gerrit 的網頁式使用者介面管理 Git 提交內容和程式碼審查。當提交內容上傳至 Gerrit 時,就稱為「變更」

如要為 Fuchsia 提供變更,請按照下列步驟操作:

  1. 必要條件
  2. 在 Gerrit 中建立變更
  3. 要求審查程式碼
  4. 追蹤程式碼審查
  5. 提交變更

1. 必要條件

開始設定前,請務必完成下列事項:

簽署 Google CLA

請完成下列步驟:

  1. 前往 Google 開發人員的「貢獻者授權協議」頁面。
  2. 代表您自己雇主簽署協議。

請完成下列步驟:

  1. 登入 Gerrit
  2. 前往 https://fuchsia.googlesource.com
  3. 按一下頁面頂端的「產生密碼」
  4. 複製產生的程式碼,然後在工作站的終端機中執行。

2. 在 Gerrit 中建立變更

如要在 Gerrit 中建立變更,請按照下列步驟操作:

  1. 前往 Fuchsia 目錄,例如:

    cd ~/fuchsia
  2. 建立新分支:

    git checkout -b <branch_name>
  3. 在新分支中建立或編輯檔案。

  4. 修改或新增程式碼的格式。

    fx format-code
  5. 新增更新後的檔案:

    git add <files>
  6. 提交已更新的檔案並寫入修訂訊息

    git commit
  7. 將修訂版本上傳至 Gerrit:

    git push origin HEAD:refs/for/main

    如要進一步瞭解如何上傳變更,請參閱 Gerrit 說明文件

    如要進一步瞭解用於控制提交行為的特殊選項,請參閱「提交訊息選項」。

3. 要求程式碼審查

建立變更後,如要要求程式碼審查,請按照下列步驟操作:

  1. 前往 Fuchsia Gerrit 資訊主頁
  2. 點選「傳送審查」部分中的變更項目。
  3. 按一下「新增審查者」
  4. 依電子郵件地址新增評論者。

    您可以參考 OWNERS 檔案,該檔案位於您進行變更的目錄或其中一個上層目錄中,可協助您找出最適合審查變更的審查人員。如要進一步瞭解 Fuchsia 擁有者,請參閱 OWNERS

  5. 按一下「傳送」

4. 追蹤程式碼審查進度

如要追蹤程式碼審查進度,請使用 Gerrit 的 網路使用者介面。(如要進一步瞭解如何使用 Gerrit 程式碼審查工具,請參閱「Review UI」)。

您提出變更程式碼審查要求後,審查人員就能評分您的變更內容。審查者可以為您的變更標示 -2、-1、0、+1 或 +2 分。(如要進一步瞭解審查標籤定義,請參閱「Gerrit 程式碼審查 - 審查標籤」)。您需要提供程式碼審查標籤 +2,才能提交變更。 只有目錄擁有者才能套用 Code Review Label +2 分數。

如果您需要在審查過程中更新變更,請參閱「附錄」中的「更新並上傳修補程式」(或「解決合併衝突」)。

解決註解

審查人員可能會透過註解說明您必須更新程式碼內容,然後這些內容才能核准您的變更。一般來說,只有在您確定審查者會接受更新內容時,才勾選留言旁的「已解決」核取方塊。如對審查人員是否認同更新內容有任何疑問,請不要勾選「Resolved」(已解決) 核取方塊。

5. 提交變更

只要存放區擁有者將 Code Review Label +2 套用至變更,即可提交變更。提交變更時,系統會將變更提交至修訂版本佇列 (CQ)。修訂佇列會驗證並合併 main 分支的變更。

只有具備修訂版本存取權的協作者可以直接透過 Gerrit 介面提交程式碼。一般會員需要請提交者代為提交程式碼。

附錄

更新及上傳修補程式

建立變更後,如要將修補程式上傳至變更,請執行下列操作:

  1. 在同一個分支版本中建立或編輯檔案。

  2. 設定更新後的檔案格式:

    fx format-code
  3. 新增更新的檔案:

    git add <updated_files>
  4. 使用 --amend 選項,在同一個提交中加入修補程式:

    git commit --amend
  5. 將修補程式上傳至 Gerrit:

    git push origin HEAD:refs/for/main

解決合併衝突

如果 Gerrit 警告您變更中出現了合併衝突,請採取下列行動:

  1. origin/main 重新設定基準,這會顯示導致合併衝突的檔案:

    git rebase origin/main
  2. 編輯這些檔案以解決衝突問題,並新增更新後的檔案:

    git add <files_with_resolved_conflicts>
  3. 設定檔案格式:

    fx format-code
  4. 完成重新接合:

    git rebase --continue
  5. 使用 --amend 選項提交更新後的檔案:

    git commit --amend
  6. 將修補程式上傳至 Gerrit:

    git push origin HEAD:refs/for/main

刪除本機分支

變更提交後,您可以刪除本機分支:

git branch -d <branch_name>

撰寫變更訊息

撰寫變更訊息時,請遵循修訂版本訊息格式指南

管理跨多個存放區的變更

如要瞭解如何管理橫跨不同存放區 (花瓣粉) 的變更,請參閱以下頁面:

如要進一步瞭解 Fuchsia 存放區的結構,請參閱「原始碼版面配置」。