提交 Pull Request
如果您想貢獻 ESLint 儲存庫,請使用 GitHub pull request。這是我們評估您的程式碼並將其合併到程式碼庫中的最快方式。請不要提交包含程式碼片段的 issue。這樣做意味著我們需要手動合併變更並更新任何適當的測試。這降低了您的程式碼及時包含的可能性。請使用 pull request。
開始使用
如果您想處理 pull request,並且您以前從未提交過程式碼,請按照以下步驟操作
- 設定開發環境。
- 如果您想實作重大變更或核心變更,請確保有一個 issue 描述您正在做的事情,並且該 issue 已被接受。您可以建立新的 issue,或者只是表明您正在處理現有的 issue。錯誤修復、文件變更和其他 pull request 不需要 issue。
在那之後,您就可以開始處理程式碼了。
使用程式碼
提交 pull request 的過程相當簡單,並且通常每次都遵循相同的模式
每個步驟的詳細資訊如下。
步驟 1:建立新分支
發送 pull request 的第一步是在您的 ESLint fork 中建立一個新分支。給分支一個描述性的名稱,描述您正在修復的內容,例如
git checkout -b issue1234
您應該在這個分支中完成 issue 的所有開發工作。
注意: 不要將多個 issue 的修復合併到一個分支中。為您正在處理的每個 issue 使用單獨的分支。
步驟 2:進行變更
依照程式碼慣例對程式碼和測試進行變更。完成後,將變更提交到您的分支
git add -A
git commit
所有 ESLint 專案都遵循Conventional Commits 來撰寫我們的提交訊息。(注意:我們不支援訊息中的可選範圍。)以下是一個提交訊息範例
tag: Short description of what you did
Longer description here if necessary
Fixes #1234
提交訊息的第一行(摘要)必須具有特定格式。此格式由我們的建置工具檢查。雖然提交訊息不會直接檢查,但它將用於產生 pull request 的標題,該標題將在提交 pull request 時檢查。
tag
是以下其中之一
fix
- 用於錯誤修復。feat
- 用於向後相容的增強功能或新增回報問題的規則變更。fix!
- 用於向後不相容的錯誤修復。feat!
- 用於向後不相容的增強功能或功能。docs
- 僅限文件變更。chore
- 用於非使用者面向的變更。build
- 僅限建置過程變更。refactor
- 不影響 API 或使用者體驗的變更。test
- 僅限測試檔案的變更。ci
- 變更我們的 CI 設定檔和腳本。perf
- 改善效能的程式碼變更。
使用您正在處理的 issue 的標籤來確定最佳標籤。
訊息摘要應為變更的單句描述,且長度必須為 72 個字元或更短。如果 pull request 解決了一個 issue,則應在提交訊息的正文中以 Fixes #1234
的格式提及 issue 編號。如果提交並未完全修復 issue,則使用 Refs #1234
而不是 Fixes #1234
。
以下是一些好的提交訊息摘要範例
build: Update Travis to only test Node 0.10
fix: Semi rule incorrectly flagging extra semicolon
chore: Upgrade Esprima to 1.2, switch to using comment attachment
步驟 3:Rebase 到 upstream
在您發送 pull request 之前,請務必 rebase 到 upstream 來源。這確保您的程式碼在最新的可用程式碼上執行。
git fetch upstream
git rebase upstream/main
步驟 4:執行測試
在 rebase 之後,請務必再次執行所有測試,以確保沒有任何問題
npm test
如果存在任何失敗的測試,請更新您的程式碼,直到所有測試都通過。
步驟 5:再次檢查您的提交
在您的程式碼準備就緒後,現在是再次檢查您的提交以確保其符合我們的慣例的好時機。以下是要檢查的事項
- 提交訊息的格式正確。
- 變更不會引入功能倒退。請務必執行
npm test
以驗證您的變更,然後再提交 pull request。 - 為不相關的變更建立單獨的 pull request。包含多個不相關變更的大型 pull request 可能會在不合併的情況下關閉。
- 所有變更都必須附帶測試,即使您正在處理的功能以前沒有測試。
- 所有使用者面向的變更都必須附帶適當的文件。
- 遵循程式碼慣例。
步驟 6:推送您的變更
接下來,將您的變更推送到您的 clone
git push origin issue1234
如果您因為某些參考過舊而無法推送,請改為強制推送
git push -f origin issue1234
步驟 7:發送 pull request
現在您已準備好發送 pull request。前往您的 ESLint fork,然後依照GitHub 文件了解如何發送 pull request。
為了向 ESLint 專案提交程式碼或文件,當您發送您的第一個 pull request 時,系統會要求您簽署我們的 CLA。(閱讀更多關於 OpenJS Foundation CLA 流程,請訪問 https://cla.openjsf.org/。)
pull request 標題會從第一個提交的摘要自動產生,但可以在提交 pull request 之前編輯。
pull request 的描述應說明您做了什麼以及如何看到其效果。
當 pull request 合併時,其提交將被壓縮為一個單一提交。壓縮提交訊息的第一行將包含 pull request 的標題和 pull request 編號。pull request 標題格式很重要,因為標題用於為每個版本建立變更日誌。標籤和 issue 編號有助於建立更一致且更有用的變更日誌。
後續追蹤
一旦您的 pull request 發送出去,就輪到團隊審查它了。因此,請務必
- 監控您的 pull request 的 GitHub Actions CI 建置狀態。如果失敗,請調查原因。我們無法合併任何原因導致 CI 建置失敗的 pull request。
- 回覆團隊成員在 pull request 上留下的評論。請記住,我們希望幫助您完成程式碼,因此請接受我們的回饋。
- 我們可能會要求您進行變更、rebase 或 squash 您的提交。
更新 Pull Request 標題
如果您的 pull request 標題格式不正確,系統會要求您更新它。您可以透過 GitHub 使用者介面執行此操作。
更新程式碼
如果我們要求您進行程式碼變更,則無需關閉 pull request 並建立新的 pull request。只需回到您 fork 上的分支並進行變更。然後,當您準備好時,您可以將您的變更新增到分支中
git add -A
git commit
git push origin issue1234
在更新程式碼時,通常最好將其他提交新增到您的分支,而不是修改原始提交,因為審查者可以輕鬆判斷哪些變更是為了回應特定審查而進行的。當我們合併 pull request 時,我們會將您分支中的所有提交壓縮為 main
分支上的單一提交。
後續提交中的提交訊息不需要任何特定格式,因為這些提交不會顯示在變更日誌中。
Rebase
如果您的程式碼已過時,我們可能會要求您 rebase。這表示我們希望您將您的變更應用於最新的 upstream 程式碼之上。請確保您已設定開發環境,然後您可以使用以下命令進行 rebase
git fetch upstream
git rebase upstream/main
您可能會發現當您嘗試 rebase 時存在合併衝突。請解決衝突,然後對您的分支進行強制推送
git push origin issue1234 -f