Skip to content

Commit 38aa257

Browse files
committed
proposal: add bug fix tracing strategy for version releasing
1 parent 4bd1ca2 commit 38aa257

File tree

1 file changed

+236
-0
lines changed

1 file changed

+236
-0
lines changed

proposal/A1-bug-fix-tracing.zh_CN.md

+236
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
[English](A1-bug-fix-tracing.md) | 中文
2+
3+
# 标题
4+
5+
* 作者:liucf3995
6+
* 批准者:
7+
* 状态:草案
8+
* 已实现的语言:
9+
* 上次更新时间:2023-10-26
10+
* 讨论链接:
11+
12+
## 目录
13+
14+
* [概要](#概要)
15+
* [背景](#背景)
16+
* [相关提案](#相关提案)
17+
* [设计细节](#设计细节)
18+
* [实现细节](#实现细节)
19+
* [业界实现](#业界实现)
20+
* [其他问题](#其他问题)
21+
22+
## 概要
23+
24+
在 tRPC 代码仓库版本发布时,为 Bug 修复情况提供跟踪策略。
25+
26+
## 背景
27+
28+
tRPC 当前的 ChangeLog 会提示每个版本新增的 Features 以及修复的 Bugs,但是未提供 Bug 跟踪信息。
29+
即,用户在选择 tRPC 版本时,可以得知所选版本已经解决了哪些 Bugs,但是无法得知还有哪些 Bugs 未解决。
30+
31+
目标:定义框架发布版本时 ChangeLog 中 BugFix 的规范格式,然后通过自动化的工具提取数据后,用户可以在 tRPC 官网上通过选择 tRPC
32+
的某个具体版本后,除了看到这个版本修复了哪些 Bugs,还可以看到这个版本存在哪些 Bugs。
33+
34+
例如:选择 `trpc-cpp/v1.4.2`,页面提示如下内容:
35+
36+
```text
37+
已修复 Bugs:
38+
Bug-01(#PR): Bug 描述。从 v1.1.0 引入,在 v1.4.2 修复。
39+
Bug-02(#PR): Bug 描述。从 v1.1.1 引入,在 v1.4.2 修复。
40+
...
41+
42+
未修复 Bugs:
43+
Bug-01(#PR): Bug 描述。从 v1.1.0 引入。
44+
Bug-02(#PR): Bug 描述,从 v2.1.0 发现,引入版本号未知。
45+
...
46+
```
47+
48+
在报告 Bug 时,如果知道引入 Bug 的准确版本号,则提示 Bug 引入版本号。如果无法得知 Bug 引入的准确版本号,则标记 “Bug
49+
发现版本号,引入版本号未知”。
50+
51+
### 相关提案
52+
53+
暂无其他相关提案。
54+
55+
## 设计细节
56+
57+
主要借助 Issue 和 ChangeLog 两部分信息记录 Bug 修复信息。
58+
59+
* 所有的 Bug 信息通过 Issue 来跟踪,通过 Issue 关闭和打开的状态区分未修复 Bug 清单(未关闭的 Bug Issue)。
60+
* ChangeLog 记录 Bug 引入版本号、修复版本号(一般是当前版本号)、关联的 #PR。同时,PR 中也记录已被修复 Bug 的 #Issue 和引入版本号。
61+
62+
## 实现细节
63+
64+
### 如何跟踪 Bug 信息
65+
66+
所有的 Bugs 均通过 Issues 来跟踪。
67+
68+
* 开发者在修复 Bug 时,及时关闭对应的 Issue。
69+
* 管理员在发布版本时,在 ChangeLog 准确记录被修复的 Bugs 信息。
70+
71+
推荐(可选):提交 Issue 时,Issue 正文包含 Bug 引入版本号或者发现版本号。
72+
73+
### 如何确认 Bug 引入版本号和修复版本号
74+
75+
用户在报告 Bug 时,一般会提供自己所使用的版本号,但这个版本号可能并非 Bug 最早引入的版本号。所以,单从 Issue 信息可能无法得知
76+
Bug 引入时机。可将 Issue 报告的版本号作为默认的版本号,等后续修复时,可以更新 Bug 引入的具体版本号。
77+
78+
Bug 修复版本号由 ChangeLog 发版记录标识。
79+
80+
### 如何编辑 ChangeLog#BugFix 条目
81+
82+
已修复 Bug 基本格式:Bug 影响范围 + Bug描述 + (!#PR) + (Bug 引入版本范围)。
83+
84+
Bug 引入版本范围:
85+
86+
* v1.2.0:由 v1.2.0 引入。
87+
* v1.2.0~v1.4.0:v1.2.0 ~ v1.4.0 某个版本引入,具体版本号未知。
88+
* v1.1.0~:1.1.0 ~ 修复版本之间的某个版本引入,具体版本号未知。
89+
* ~v2.2.0:起始版本 ~ v1.2.0 之间某个版本引入,具体版本号未知。
90+
91+
```markdown
92+
...
93+
94+
## [$current_version](url)($release_date)
95+
96+
...
97+
98+
### Bug Fixes
99+
- **$scope:** $prompt (!#PR) ($version)
100+
- **$scope:** $prompt (!#PR) ($version_begin~$version_end)
101+
- **$scope:** $prompt (!#PR) (~$version_end)
102+
- **$scope:** $prompt (!#PR) ($version_begin~)
103+
104+
...
105+
```
106+
107+
### 如何计算 Bugs 修复结果
108+
109+
解析 ChangeLog#BugFixes 记录,得到如下数据:
110+
* 已修复 Bug 的引入版本号范围、修复版本号、#PR 。
111+
112+
计算某个具体版本下 Bugs 修复情况。
113+
* 当前版本已修复 Bugs:过滤 Bug 修复版本号为当前版本号的已修复 Bugs。
114+
* 当前版本未修复 Bugs:从已修复的所有 Bugs 中过滤,条件:当前版本号在 Bug 引入版本号(或者发现版本号)范围内。
115+
116+
117+
### 举例说明
118+
119+
管理员依据 Bug Issue + PR 列表记录 ChangeLog。
120+
121+
* Bug Issue 列表(Closed):
122+
123+
```text
124+
[#1] xx
125+
126+
version: v1.1.0
127+
128+
///////////////////////////////////////
129+
130+
[#2] yy
131+
132+
version: v1.2.0
133+
134+
///////////////////////////////////////
135+
136+
[#3] zz
137+
138+
version: v1.3.0
139+
```
140+
141+
* Bug Issue 列表(Open):
142+
143+
```text
144+
[#4] xx
145+
146+
version: v1.1.1
147+
148+
///////////////////////////////////////
149+
150+
[#5] yy
151+
152+
version: v1.2.1
153+
154+
///////////////////////////////////////
155+
156+
[#6] zz
157+
158+
version: v1.3.1
159+
```
160+
161+
* PR 列表(Merged):
162+
163+
```text
164+
[#7] xx
165+
166+
close #1
167+
168+
///////////////////////////////////////
169+
170+
[#8] yy
171+
172+
close #2
173+
174+
///////////////////////////////////////
175+
176+
[#9] zz
177+
178+
close #3
179+
```
180+
181+
* ChangeLog:
182+
183+
```markdown
184+
185+
## [v1.3.1](https://github.com/xx/yy)(2023-10-19)
186+
...
187+
### Bug Fixes
188+
- **stream:** yy (!8) (v1.2.0)
189+
- **client:** zz (!9) (v1.3.0)
190+
191+
...
192+
193+
## [v1.2.1](https://github.com/xx/yy)(2023-09-19)
194+
...
195+
### Bug Fixes
196+
- **transport:** yy (!7) (1.2.0)
197+
198+
...
199+
```
200+
201+
选择某个具体版本后,提示已修复 Bugs 信息和未修复 Bugs 信息。
202+
203+
提示:Issue 列表中还未被修复的 Bugs 不会展示出来。
204+
205+
* 选择 v1.3.1 时,提示:
206+
207+
```text
208+
已修复 Bugs:
209+
Bug-02(#8): yy。从 v1.2.0 引入,在 v1.3.1 修复。
210+
Bug-03(#9): zz。从 v1.3.0 引入, 在 v1.3.1 修复。
211+
212+
```
213+
214+
* 选择 v1.2.1 时,提示:
215+
216+
```text
217+
已修复 Bugs:
218+
Bug-01(#7): xx。从 v1.1.0 发现,在 v1.2.1 修复。
219+
220+
未修复 Bugs:
221+
Bug-02(#8): yy。从 v1.2.0 引入,在 v1.3.1 修复。
222+
```
223+
224+
## 业界实现
225+
226+
暂无
227+
228+
## 其他问题
229+
230+
可以跟踪 Bug 从某个一个版本引入,另外一个版本修复时的情况。无法跟踪一个 Bug 从多个版本引入和修复信息。
231+
比如,Bug-A 从 v1.1.0 引入,然后在 v1.1.3 修复。后来相同的 Bug 又在 v1.2.0 引入,在 v1.2.1 修复。
232+
这种情况下需要创建两个 Bug 来标识。
233+
234+
页面展示的 Bugs 信息中只包含已修复的 Bugs,Issue 列表中当前还未被修复的 Bugs 不会展示出来。
235+
236+
对历史已经存在 ChangeLog 和 Issue 记录可能无法解析,需要解析工具做兼容。

0 commit comments

Comments
 (0)