Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Bug 分級方針¶
本頁說明了在 Godot 的 GitHub 儲存庫上處理 Issue 與 PR (Pull Request) 的 Bug 分級團隊 (亦稱為 Bugsquad) 的一般工作流程。這個工作流程與 Bugsquad 一起發展,對於下列方針有任何修改建議都歡迎提出。
Issue 管理¶
GitHub 提供了各種管理 Issue 的功能:
從預先定義的列表中設定一個或多個 Label (標籤)
從預先定義的列表中設定 Milestone (里程碑)
在專案 Dashboard (儀表板) 中持續追蹤 Issue
將 Godot Engine 組織成員中其中一位貢獻者設定為「Assignee (負責人)」
由於 Godot Engine 在 GitHub 上的組織目前還只有有限的貢獻者,因此我們還沒很常用到負責人的功能。歡迎所有貢獻者參與,當遇到相關問題時在 Issue 上提出並與其他開發人員討論是解決問題最好的方法。。
目前我們也還沒使用到 Project Dashboard (專案儀表板) 功能。
我們會儘量給 Issue 與 PR 上加上 Label (必要的時候也會加上 Milestone)。
Label (標齊)¶
在 Godot 儲存庫中目前有設定下列 Label:
分類:
Archived: 封存。可能是與其他 Issue 重複或無效的 Issue。這種 Issue 也會被 Close (關閉)。
Breaks compat:用於描述需要破壞已有專案相容性才能修復的內容。
Bug: 代表某東西沒有正常運作。
Cherrypick:用於描述合併入
master
分支後還可以移植回穩定分支的內容。Confirmed: 已確認。由至少一位除了回報 Bug 的人以外的開發者確認 (通常用於 Bug 回報)。設定該 Label 是要讓其他開發人員在要處理 Issue 時知道那些 Issue 目前仍可重現。因此,在註解中寫上能復現該 Issue 的平台與 Godot 版本或 Commit 是好習慣。當某個開發人員過了一年之後回來看這個 Issue,則 Confirmed Label 可能不再適用。
Discussion: 討論。該 Issue 尚未取得共識,需要進一步討論以確認對於該議題確切該怎麼處理。
Documentation: 說明文件。與說明文件有關的 Issue。通常是要求要改進 API 說明文件。有關 ReadTheDocs 說明文件的 Issue 應開在 godot-docs 儲存庫內。
Enhancement: 改進。對現有功能的改進建議。
Feature proposal:用於描述實作新功能的願望。請注意 Godot 主倉庫不再接受功能請求。請換用 godot-proposals。
For PR meeting:該問題需要在拉取請求會議中進行討論。會議是公開的,在 `Godot 貢獻者聊天 <https://chat.godotengine.org/>`_中舉行。
Junior job: 初階工作。我們 假設 該 Issue 很容易修正,因此對於想熟悉原始碼的初級貢獻者是再適合不過的工作了。
Needs testing: 需要測試。該 Issue/PR 無法完整被測試,並需要進一步測試。這可能表示該 Issue 需要在不同的硬體或軟體設定上測試,甚至是測試所需要的重現步驟不一定的情況。
Needs rebase: 需要 Rebase。該 Issue 需要進行 Git Rebase 才能合併。
Performance: 直接影響引擎或編輯器性能的問題。也可用於改善性能或增加低端友好選項的拉取請求。不應與 Usability 可用性結合在一起。
GDScript: 與 GDScript 有關。
Regression: 在沒有表現出該錯誤的穩定版本發行之後,該錯誤出現。
Salvageable: 由於設計問題或合併衝突,該拉動請求不能被合併,其作者也不再活躍。然而,它仍然可以被一個外部貢獻者拾取,以使其達到可合併狀態。為此,您需要基於原始拉取請求打開一個新的拉取請求。
Tracker: 追蹤用。用來跟進其他 Issue 的 Issue (如所有與外掛系統有關的 Issue)。
Usability: 可用性。直接影響使用者可用性的 Issue。
這些分類用來對 Issue 進行一般性的分級。當有必要是這些 Label 也可能會組合使用,如某個用於提升可用性的 Issue 可以同時被標上 Enhancement 與 Usability。某個未達共識或描述不夠精確的功能請求會同時被標上 Feature proposal 與 Discussion。
主題:
2D: 涉及 2D 特定問題。應該與下面的某個標籤組合使用,而不應該與 3D 組合。
3D: 涉及 3D 特定問題。應該與下面的某個標籤組合使用,而不應該與 2D 組合。
Editor: 與編輯器有關的 Issue (主要為 UI)。
Assetlib: 與素材庫有關的 Issue。
Audio: 與音訊功能有關的 Issue (不論低階或高階)。
Buildsystem: 與建置有關的 Issue,可能與 SCons 建置系統或其他特定編譯器有關。
Codestyle:與程式碼庫所使用的程式設計風格有關。
Core: 任何與核心引擎有關的 Issue。如果是足夠大的主題,可能會進一步被拆分成多個 Issue。
Mono: 與 C# / Mono 繫結有關。
Editor: 與編輯器有關的 Issue (主要為 UI)。
GDScript: 與 GDScript 有關。
GDExtension:與本機擴充的 GDExtension 系統相關。
GDScript: 與 GDScript 有關。
Mono: 與 C# / Mono 繫結有關。
Import:與資源匯入系統有關。
GDScript: 與 GDScript 有關。
多人遊戲:涉及多人遊戲(進階網路)系統。
Navigation:與導覽系統(包括 A* 和導覽網格)有關。
Network: 與網路有關。
Physics: 與物理引擎有關 (2D/3D)。
Plugin: 與撰寫外掛時遇到的問題有關。
Porting: 與某些特定平台有關。
Rendering: 與 2D、3D 渲染引擎有關。
Shaders:與 Godot 著色器語言或視覺化著色器有關。
Network: 與網路有關。
Thirdparty:與 Godot 所使用的協力廠商庫有關。
XR:與增強現實(AR)或虛擬實境(VR)有關。
Issue 通常只會對應到一個主題,雖然很難想像會有 Issue 同時符合兩個主題。主要的概念是希望每個主題背後都有專門的貢獻者團隊,這樣這些團隊就能各自專注於標上該主題標籤的 Issue。
平台:
Android, iOS, Linux, macOS, Web, Windows
預設情況下,我們都假設某個 Issue 適用於所有平台。但如果使用了其中一個平台的 Label,則表示剛才這個假設不適用 (也就是如這個 Bug 是在 Android 或 Linux 上才會出現的,那麼就加上這兩個平台)。
說明文件修改記錄¶
在這份文件之外,你可能也會想看看 Godot 的 demo 專案。
Archived: 封存。可能是與其他 Issue 重複或無效的 Issue。這種 Issue 也會被 Close (關閉)。
Bug:現有頁面中的錯誤資訊。請勿對*缺失*資訊使用。
Cherrypick:用於描述合併入
master
分支後還可以移植回穩定分支的內容。依賴項:描述更新相依性檔案的拉取請求。
Discussion: 討論。該 Issue 尚未取得共識,需要進一步討論以確認對於該議題確切該怎麼處理。
Enhancememnt:為現有頁面加入新資訊。
Junior job: 初階工作。我們 假設 該 Issue 很容易修正,因此對於想熟悉原始碼的初級貢獻者是再適合不過的工作了。
Needs rebase: 需要 Rebase。該 Issue 需要進行 Git Rebase 才能合併。
Python:更新 Python 程式碼的拉取請求。
Salvageable: 由於設計問題或合併衝突,該拉動請求不能被合併,其作者也不再活躍。然而,它仍然可以被一個外部貢獻者拾取,以使其達到可合併狀態。為此,您需要基於原始拉取請求打開一個新的拉取請求。
Tracker: 追蹤用。用來跟進其他 Issue 的 Issue (如所有與外掛系統有關的 Issue)。
相機:
關於:與檔案的「關於」部分和其他一般文章相關的問題和 PR。
Class reference:類參考的問題,非文件頁面。
社區:與檔案的社區部分相關的問題和 PR。
貢獻:與檔案的貢獻/開發部分相關的問題和 PR。
入門:與檔案的入門部分相關的問題和 PR。
手冊:與檔案的手冊/教學部分相關的問題和 PR。
常數
圖片:涉及文章中過時或不正確圖像的問題和 PR。
新頁面:與為新功能或未記錄功能建立新檔案頁面相關的問題和 PR 。
Organization:這個問題涉及移動頁面或者重新組織內容。
校對:與校對檔案相關的問題和 PR。
重定向:涉及移動內容和在後端新增重定向規則的問題和 PR。
網站:與新增網站功能和修復錯誤相關的問題,無論是在前端或後端,
主題:
可用主題描述與主儲存庫中的主題相同的內容。
Milestone (里程碑)¶
Milestone (里程碑) 對應到現有 Godot 藍圖中已計劃的未來版本。當有 Issue 符合這個藍圖中的計劃,則應該列在相應的 Milestone 中。如果是不對應任何目前藍圖的 Issue,就應該保持沒有 Milestone 的狀態。依照經驗法則,如果 Issue 涉及在 Milestone 中的新功能、任何絕對不該在未來穩定版更新中出現的 Bug、或是任何 Juan 馬上就想處理的東西,就該對應到相關 Milestone :)
不管 Issue 設定了什麼 Milestone,都歡迎貢獻者自由選擇 Issue 處理。若是某個不緊急且沒設定 Milestone 的 Bug 也依然歡迎處理。