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 的一部分。