Go Wiki: GerritBot
GerritBot 是一個用於將 GitHub Pull Request (PRs) 匯入 Gerrit 進行程式碼檢閱的工具。建立這個工具是因為 Go 團隊所有的檢閱都在 Gerrit 中進行,但我們希望開放一種更常見的透過 GitHub PRs 參與程式碼的作業流程。
目錄
工作流程
- 使用者可以對我們的任何一個 GitHub 儲存庫上傳 GitHub PR,就像對其他接受 PR 的 GitHub 專案一樣
- 然後 PR 的變更會由 GerritBot 匯入,並且會發佈一則訊息到 GitHub PR 中,其中包含連到 Gerrit 檢閱的連結
- 所有留言都在 Gerrit 中處理。對 GitHub PR 的任何留言都會被忽略
- PR 作者可以繼續將提交上傳到 PR 使用的分支,以回應 Gerrit 中的意見回饋
- 任何對提交訊息的變更必須透過編輯 GitHub PR 的標題和說明來完成,而不是透過 Gerrit 或 git。 (有關詳細資訊,請參閱下列常見問題解答)
- 草稿 PR會匯入 WIP
- 一旦程式碼準備好合併,維護者將在 Gerrit 上提交變更,GerritBot 將會關閉這個問題
- 類似地,如果一個變更在 Gerrit 上關閉或放棄,對應的協力合作提案將會關閉
常見問題
我需要一個 Google 帳戶才能註冊 Gerrit 嗎?為什麼我無法使用我的 GitHub 帳戶登入?
你需要一個 Gmail 或其他 Google 帳戶才能註冊 Gerrit。這是執行我們的 Gerrit 執行個體的基礎架構的限制,且不在我們的控制範圍內,而且你已經需要一個 Google 帳戶才能簽署 CLC,這是我們在第一時間接受你的貢獻的必要條件。
我在 Gerrit 中的評論留下回應,但除了我之外沒人可以看見
在 Gerrit 中針對程式碼評論的回應首先會儲存為草稿,需要透過「回覆」按鈕發佈。這是為了防止每次檢閱「工作階段」有多封電子郵件,並類似於 GitHub 中的審查工作流程。如果你在按鈕中的「回覆」文字旁邊看到一個數字,這表示你有一些待發佈的草稿。
GerritBot 如何確定最終提交訊息?
它使用 GitHub 協力合作提案的標題和說明來建構 Gerrit 變更的提交訊息。你可以使用 GitHub 網頁介面(而非 Gerrit 或 git)來編輯它。協力合作提案說明位於 GitHub 協力合作提案「對話」標籤中的第一個文字區塊。它可以透過「…」功能表中的「編輯」選項編輯。
注意:Gerrit 會匯入你在 GitHub 中編輯訊息時可見的純文字,它不會匯入你在 GitHub 中編輯前看到的呈現文字。
一個常見的混淆領域與問題參考有關。例如,GerritBot 或審查人員可能會要求你避免問題參考的網址。在 Gerrit 中,你可能會看到問題的完整網址,但在 GitHub 網頁介面中,你可能只會看到問題參考,例如#12345
,而且來源網址可能不明確。這可能是因為 GitHub 中的呈現檢視與基礎原生/純文字之間的混淆所致。如果 GitHub 網頁介面在你在 GitHub 中編輯文字時顯示類似修正 https://github.com/golang/go/issues/12345
的內容,請將它變更為修正 #12345
或修正 golang/go#12345
。有關問題參考的更多資訊,請參閱貢獻指南。
在 GitHub 中編輯協力合作提案後,可能需要大約 10 分鐘,才能更新 Gerrit 變更。
什麼是變更清單?什麼是 Gerrit 變更?
CL 係「變更清單」的縮寫,基本上是提議引入儲存庫的修補程式。Go 專案使用 Gerrit 仔細審查每一筆 CL。範例 CL 為 https://go.dev.org.tw/cl/508475。
Gerrit 變更是 CL 的另一種說法。
我可以協助審查其他人的 CL 嗎?
是的,這是相當受到鼓勵的,也是非常適合熟悉 Gerrit、Go 專案的 程式碼審查程序,以及 Go 標準函式庫、執行時期、編譯器等內部運作的好辦法。
你可以瀏覽目前開啟的 CL 在此,並按一下星號圖示,訂閱相關 CL 的更新訊息。
你不必是程式碼專家,就能協助進行初步審查分類。詳情請參閱 協助審查 CL 部分,閱讀 Gardening wiki 頁面。
我聽說 Gerrit 每項變更需要一次 commit。我可以上傳多筆 commit 到我的 PR 嗎?
你可以上傳盡可能多的 commit。GerritBot 會處理將你的 commit 壓縮成一項變更,讓 Gerrit 可以處理。
為什麼 GerritBot 是我的變更擁有者?
這是因為 開放錯誤,Gerrit 以其他使用者身分處理方式有關。一旦修正後,原始作者也會是變更的擁有者。
我可以要求 GerritBot 停止在我的 PR 上貼文嗎?
你可以使用 comments
斜線命令(例如,/comments off
)切換 GerritBot 的留言。
意見回饋和錯誤回報
請 提交問題,並在標題中使用 x/build/cmd/gerritbot:
前置詞。
我想新增功能/修正錯誤
此內容屬於 Go Wiki。