審查 Pull Request
Pull Request 提交頻繁,代表我們與社群互動的最佳機會。因此,在合併 Pull Request 之前,務必仔細審查,且 Pull Request 上的互動應為正面。
誰可以審查 Pull Request?
任何人,包括團隊成員和公眾,都可以在 Pull Request 上留言。
審查 Pull Request
當 Pull Request 開啟時,機器人會檢查以下項目
- 提交者是否已簽署 CLA?
- 提交訊息摘要的格式是否正確?
- 提交摘要是否太長?
機器人會新增註解,說明它發現的問題。在這些問題解決之前,您不需要進一步查看 Pull Request(不需要在 Pull Request 上留言要求提交者執行機器人要求的動作 - 這就是我們設置機器人的原因!)。
一旦機器人檢查通過,您應檢查以下項目
- 再次確認 Pull Request 標題是否根據 issue 正確(或者,如果沒有參考 issue,則根據所述問題)。
- 如果 Pull Request 對核心程式碼進行變更,請確保存在 issue,且 Pull Request 在提交訊息中參考了該 issue。
- 程式碼是否遵循我們的慣例(包括標頭註解、JSDoc 註解等)?如果沒有,請留下回饋並參考程式碼慣例文件。
- 對於程式碼變更
- 是否有測試驗證變更?如果沒有,請要求他們提供。
- 變更是否需要文件?如果需要,請要求提交者新增必要的文件。
- 是否有任何自動化測試錯誤?如果有的話,請要求提交者檢查。
- 如果您已審查 Pull Request 且沒有未解決的問題,請留下註解 “LGTM” 以表示您的核准。如果您希望其他人驗證變更,請註解 “LGTM but would like someone else to verify.”。
注意:如果您是團隊成員且已在 Pull Request 上留下註解,請追蹤確認您的註解是否已獲得處理。
Pull Request 的必要核准
任何 Committer、Reviewer 或 TSC 成員都可以核准 Pull Request,但合併所需的核准取決於 Pull Request 的類型。
合併非破壞性變更需要一位 Committer 核准,該變更屬於
- 文件變更
- 錯誤修正(規則或核心程式碼)
- 依賴項升級
- 與建置相關
- 雜項
對於非破壞性功能,Pull Request 需要一位 Reviewer 或 TSC 成員的核准,再加上任何其他團隊成員的另一項核准。
對於破壞性變更,Pull Request 需要兩位 TSC 成員的核准。
在 Triage Board 中移動 Pull Request
當建立 Pull Request 時,無論是由團隊成員還是外部貢獻者建立,它都會自動放置在 Triage board 的 “Needs Triage” 欄位中。Pull Request 應保留在該欄位中,直到團隊成員開始審查為止。
如果 Pull Request 沒有相關的 issue,則應通過正常的 issue triage 流程,標記為已接受。一旦接受,將 Pull Request 移動到 “Implementing” 欄位。
如果 Pull Request 有相關的 issue,則
- 如果 issue 已接受,將 Pull Request 移動到 “Implementing” 欄位。
- 如果 issue 未接受,將 Pull Request 移動到 “Evaluating” 欄位,直到 issue 標記為已接受,屆時將 Pull Request 移動到 “Implementing”。
一旦 Pull Request 獲得一個核准,可能會發生以下三件事之一
- Pull Request 具有必要的核准,且等待期(見下文)已過,因此可以合併。
- Pull Request 具有必要的核准,但等待期尚未過,因此應移動到 “Merge Candidates” 欄位。
- Pull Request 在合併前需要另一個核准,因此應移動到 “Second Review Needed” 欄位。
當 Pull Request 獲得第二個核准時,應合併(如果 100% 準備就緒)或移動到 “Merge Candidates” 欄位,如果還有任何應在下次發佈前審查的未解決問題。
誰可以合併 Pull Request
TSC 成員、Reviewer、Committer 和網站團隊成員可以在 Pull Request 獲得必要的核准後合併,具體取決於 Pull Request 的內容。
網站團隊成員可以在 eslint.org
儲存庫中合併 Pull Request,如果它是
- 文件變更
- 依賴項升級
- 雜項
何時合併 Pull Request
我們使用 “Merge” 按鈕將請求合併到儲存庫中。在合併 Pull Request 之前,請驗證
- 所有註解都已獲得處理。
- 任何提出註解的團隊成員都已驗證他們的問題已獲得處理。
- 所有自動化測試都通過(永遠不要合併測試失敗的 Pull Request)。
在合併之前,務必向提交者表示感謝,特別是如果他們在 Pull Request 上付出了很多努力。
團隊成員可以立即合併 Pull Request,如果它
- 進行小的文件變更。
- 是雜項。
- 修復儲存庫上其他工作的區塊(與建置相關、與測試相關、與依賴項相關等)。
- 是重要的修復,需要納入修補程式版本。
否則,團隊成員應在合併 Pull Request 之前遵守等待期
- 如果 Pull Request 是在週一至週五開啟,則等待 2 天。
- 如果 Pull Request 是在週六或週日開啟,則等待 3 天。
等待期確保其他團隊成員有機會在 Pull Request 合併之前進行審查。
注意:除非您收到必要的核准,否則不應合併您的 Pull Request。
何時關閉 Pull Request
在幾種情況下,關閉 Pull Request 而不合併是適當的
- Pull Request 解決了已修復的 issue。
- Pull Request 已 17 天未更新。
- Pull Request 提交者不願意遵循專案準則。
在任何這些情況下,請務必留下註解,說明 Pull Request 被關閉的原因。
關閉範例註解
如果 Pull Request 已 17 天未更新
因 17 天沒有活動而關閉。如果您仍然有興趣提交此程式碼,請隨時重新提交。
如果 Pull Request 提交者不願意遵循專案準則。
很遺憾,我們無法接受不遵循我們準則的 Pull Request。我現在將關閉此 Pull Request,但如果您願意按照我們的準則重新提交,我們很樂意審查。