Go Wiki: 處理問題
本文件解釋了我們在 Go 專案的問題跟蹤器 中如何處理問題分類和排程。
問題狀態
任何問題都必須處於以下狀態之一。專案貢獻者會移動問題從一種狀態到另一種狀態。這些明確的狀態背後的意圖是描述將問題解決到最終狀態所需的(最低)後續步驟。問題可以按任何順序在狀態之間移動,具體取決於特定問題的需求。
新
- 問題已提交。
- 格式可能不正確(標題等)。
- 要從此狀態轉換,需要有人清理問題報告,並可選擇性地抄送可能最適合調查或修復問題的人。
需要調查
- 格式正確。
- 標題具有路徑字首。
- 正文描述了問題。
- 有一個里程碑。
- 如果問題不重要,可以將里程碑設定為
Backlog。否則,將其設定為下一個即將釋出的版本。
- 如果問題不重要,可以將里程碑設定為
- 具有
NeedsInvestigation標籤。- 如果調查者正在等待某人(例如,問題報告者)提供更多資訊,也可能具有
WaitingForInfo標籤。
- 如果調查者正在等待某人(例如,問題報告者)提供更多資訊,也可能具有
- 要從此狀態轉換,需要有人檢查問題並確認它是有效的且不是現有問題的重複。
需要決策
- 問題是真實的,但我們不確定該採取什麼行動。
- 可以在 Go 1 中解決該問題。
- 在做出修復之前,需要獲得專家、貢獻者和/或社群的反饋。
- 請注意,大多數問題永遠不會轉換到此狀態,因為大多數情況下,決策都是顯而易見的“是的,應該修復”。
- 有一個里程碑。
- 具有
NeedsDecision標籤。- 可能具有
WaitingForInfo標籤。 - 可能具有
Blocked標籤,如果進展取決於另一個問題的解決或 Go 未來版本的釋出。應附帶評論解釋阻塞原因。 - 不得具有
Go2標籤。(這些問題將單獨處理。)
- 可能具有
- 要從此狀態轉換,需要有人決定如何解決該問題。
- 如果決策很複雜,該問題可以被賦予一個
Proposal標籤。該問題在此狀態下保持,直到提案流程完成,如果被批准,則移至NeedsFix。
- 如果決策很複雜,該問題可以被賦予一個
需要修復
- 解決方法已知,但工作尚未完成。
- 有一個里程碑。
- 具有
NeedsFix標籤。- 可能具有
Blocked或WaitingForInfo標籤。
- 可能具有
- 要從此狀態轉換,需要有人完成修復問題的工作。
修復待定
- 有一個修復該錯誤的 CL,尚未提交,但已透過 TryBots。
- 不應具有
Blocked或WaitingForInfo標籤。
已修復
- 問題已解決。不再需要進一步關注。
- 問題已關閉。
提案
- 有關提案流程,請參閱下文。
問題會根據需要從一種狀態轉移到另一種狀態。例如,貢獻者可以提交一個問題,將其分配給自己,並立即應用 NeedsFix 標籤。或者,一個問題可以從 NeedsDecision 轉移到 NeedsFix,但隨著複雜性的出現,之後又會移回 NeedsDecision。
問題可以在任何時候關閉,並附帶評論說明關閉原因(“已修復…”,“重複…”,“按預期工作”等)。
在任何狀態下(New 除外),問題都可以分配給某人。未分配的問題被視為任何人都可以處理。
里程碑
里程碑描述了問題解決的時間表。
-
Go1.x.y
計劃在 1.x.y 版本中修復。
-
Go1.x.y,帶有 release-blocker 標籤
必須在 1.x.y 版本中修復,或明確推遲到更高版本。
-
提案
是一個提案,與特定版本無關。
-
待辦事項
有人計劃處理它,但尚未分配給任何版本里程碑。
-
未計劃
將來可能會修復,但目前沒有人計劃這樣做。
-
未釋出
不包含在釋出中或釋出不需要。
-
Gccgo
針對 gccgo 問題。
可以使用額外的里程碑來管理特定的專案工作。
“Soon”標籤獨立於里程碑使用,表示問題具有時效性。
Proposals
對語言或標準庫 API 的更改需要透過 提案流程。在問題跟蹤器中,提案通常會帶有 Proposal 標籤並處於 Proposal 里程碑。
一項提議了與庫的向後不相容的更改的提案將帶有 v2 標籤,這意味著它只能在包的 v2 版本(或遙遠的未來,v3 版本)可用時被採納。
一項提議了語言更改的提案應帶有 LanguageChange 標籤。小的語言更改作為常規提案流程的一部分進行處理。較大的語言更改由語言審查流程處理;這些問題應帶有 LanguageChangeReview 標籤。
此內容是 Go Wiki 的一部分。