|
1 | | -# 统一的changelog版本号规范 |
| 1 | +# 统一的 changelog 版本号规范 |
2 | 2 |
|
3 | 3 | - 提案发起时间:2024-07-25 |
4 | 4 | - 提案拉取请求:https://github.com/deepin-community/rfcs/pull/12 |
|
9 | 9 |
|
10 | 10 | ## 动机 |
11 | 11 |
|
12 | | -明确版本号规范标记软件包修改信息、来源,方便通过版本号追踪与上游版本差异,提供更合理的rebuild版本机制。 |
| 12 | +明确版本号规范标记软件包修改信息、来源,方便通过版本号追踪与上游版本差异,提供更合理的 rebuild 版本机制。 |
13 | 13 |
|
14 | 14 | ## 详细设计 |
15 | 15 |
|
16 | | -**changelog版本规范** |
| 16 | +**changelog 版本规范** |
17 | 17 |
|
18 | 18 | `upstreamversion-${ver1}deepin${ver2}` |
19 | 19 |
|
20 | | -#### 1. 假设上游项目打包版本号为 x.y.z ,deepin打包版本则为 `x.y.z-${ver1}deepin${ver2}` |
| 20 | +#### 1. 假设上游项目打包版本号为 x.y.z ,deepin 打包版本则为 `x.y.z-${ver1}deepin${ver2}` |
21 | 21 |
|
22 | | -- ver1:ver1为0时表示 deepin自行打包的上游软件,ver1不为0时表示来自上游的quilt软件包自带的-ver版本 |
23 | | -- ver2:表示来自deepin社区的修改,依次递增,不可为空从0开始计算 |
| 22 | +- ver1:ver1 为 0 时表示 deepin 自行打包的上游软件,ver1 不为 0 时表示来自上游的 quilt 软件包自带的-ver 版本 |
| 23 | +- ver2:表示来自 deepin 社区的修改,依次递增,不可为空从 0 开始计算 |
24 | 24 |
|
25 | | -#### 2. 来自deepin community自行打包的上游软件 以0deepin开头标识,若该项目添加了来自deepin的patch则以deepin1 标识,依次累加, 版本号形式x.y.z-0deepin1 , 若上游已经添加-2这类版本号,版本号则为 x.y.z-2deepin1 |
| 25 | +#### 2. 来自 deepin community 自行打包的上游软件 以 0deepin 开头标识,若该项目添加了来自 deepin 的 patch 则以 deepin1 标识,依次累加, 版本号形式 x.y.z-0deepin1 , 若上游已经添加-2 这类版本号,版本号则为 x.y.z-2deepin1 |
26 | 26 |
|
27 | | -#### 3. 集成native软件包 |
28 | | -将native软件包直接改成quilt格式存在一些changelog版本格式不兼容问题 |
29 | | -因此重新修订native版本规范,形式为 `upstreamversion+deepin${ver2}` |
30 | | -native软件包没有-的连字符,因此直接在上游版本号后添加+deepin${ver2} 标记来自deepin的修改 |
| 27 | +#### 3. 集成 native 软件包 |
| 28 | + |
| 29 | +将 native 软件包直接改成 quilt 格式存在一些 changelog 版本格式不兼容问题 |
| 30 | +因此重新修订 native 版本规范,形式为 `upstreamversion+deepin${ver2}` |
| 31 | +native 软件包没有-的连字符,因此直接在上游版本号后添加+deepin${ver2} 标记来自 deepin 的修改 |
| 32 | + |
| 33 | +#### 4. CI 自动构建版本号 `x.y.z-${ver1}deepin${ver2}+u001+rb1`,001 为距离上一次修改 changelog 的 commit 次数,rb1 为 rebuild 次数,依次累加 |
31 | 34 |
|
32 | | -#### 4. CI自动构建版本号 `x.y.z-${ver1}deepin${ver2}+u001+rb1`,001为距离上一次修改changelog的commit次数,rb1为rebuild次数,依次累加 |
33 | 35 | > [!WARNING] |
34 | | -> 注:commit版本号使用仅限于开发阶段自测验证,不应流转到集成阶段 |
| 36 | +> 注:commit 版本号使用仅限于开发阶段自测验证,不应流转到集成阶段 |
| 37 | +
|
| 38 | +#### 5. rebuild 版本号规范 |
35 | 39 |
|
36 | | -#### 5. rebuild版本号规范 |
37 | | -上文一二条保持不变,若存在需要rebuild软件包, |
| 40 | +上文一二条保持不变,若存在需要 rebuild 软件包, |
38 | 41 |
|
39 | | -##### quilt软件包rebuild规范: |
| 42 | +##### quilt 软件包 rebuild 规范: |
40 | 43 |
|
41 | | -情况1:ver2不为空时直接+rb{ver}后缀,表现形式为`x.y.z-1deepin1+rb1` |
| 44 | +情况 1:ver2 不为空时直接+rb{ver}后缀,表现形式为`x.y.z-1deepin1+rb1` |
42 | 45 |
|
43 | | -情况1:ver2为空时的rebuild版本ver2默认为0,表现形式为 |
44 | | - `x.y.z-1deepin0+rb1` |
45 | | - |
46 | | -##### native软件包rebuild规范: |
| 46 | +情况 1:ver2 为空时的 rebuild 版本 ver2 默认为 0,表现形式为 |
| 47 | +`x.y.z-1deepin0+rb1` |
47 | 48 |
|
48 | | -情况1:ver2不为空时直接+rb{ver}后缀,表现形式为`x.y.z+deepin1+rb1` |
| 49 | +##### native 软件包 rebuild 规范: |
49 | 50 |
|
50 | | -情况1:ver2为空时的rebuild版本ver2默认为0,表现形式为 |
51 | | - `x.y.z+deepin0+rb1` |
| 51 | +情况 1:ver2 不为空时直接+rb{ver}后缀,表现形式为`x.y.z+deepin1+rb1` |
| 52 | + |
| 53 | +情况 1:ver2 为空时的 rebuild 版本 ver2 默认为 0,表现形式为 |
| 54 | +`x.y.z+deepin0+rb1` |
52 | 55 |
|
53 | 56 | > [!WARNING] |
54 | | -> 注:rebuild版本号使用仅限于依赖包升级,相关依赖树需要基于新版本构建编译的场景使用 |
| 57 | +> 注:rebuild 版本号使用仅限于依赖包升级,相关依赖树需要基于新版本构建编译的场景使用 |
55 | 58 |
|
56 | 59 | > [!TIP] |
57 | | -> 注: deepin0版本的用意是为了方便后续的更新迭代,按照版本号规则 deepin+rb1版本大于deepin1+rb1,所以使用deepin0后缀方便后续维护 |
| 60 | +> 注: deepin0 版本的用意是为了方便后续的更新迭代,按照版本号规则 deepin+rb1 版本大于 deepin1+rb1,所以使用 deepin0 后缀方便后续维护 |
58 | 61 |
|
59 | 62 | #### 6. 安全更新版本规范: |
60 | 63 |
|
61 | 64 | - 对于相同版本软件包需要在两个以上的版本中做安全更新(例如 v23 and v26)时,为确保版本号正确,必须大于当前软包版本且小于后续发行版中的软件包版本,请示在版本号后缀中添加+dp${version}u${num}形式 |
62 | | -- 对于v23版本 `upstreamversion-${ver1}deepin${ver2}+dp23u1` 对于v26版本 `upstreamversion-${ver1}deepin${ver2}+dp26u1` ,对于首次更新${ver2}值应当增加假设{ver2}为1 更新后应该为1.1此举是为了区别于主线版本号避免影响主线上的rebuild版本机制,对于主线的安全更新版本{ver2}加1即可, 对于后续的更新,$num值都应当累加,由于版本号形式较多建议使用 `dpkg --compare-versions` 验证版本号是否符合要求。 |
| 65 | +- 对于 v23 版本 `upstreamversion-${ver1}deepin${ver2}+dp23u1` 对于 v26 版本 `upstreamversion-${ver1}deepin${ver2}+dp26u1` ,对于首次更新${ver2}值应当增加假设{ver2}为1 更新后应该为1.1此举是为了区别于主线版本号避免影响主线上的rebuild版本机制,对于主线的安全更新版本{ver2}加1即可, 对于后续的更新,$num 值都应当累加,由于版本号形式较多建议使用 `dpkg --compare-versions` 验证版本号是否符合要求。 |
63 | 66 | - 参考的形式 原版本 `upstreamversion-1deepin1` 安全更新版本 `upstreamversion-1deepin1.1+dp23u1` |
64 | | -- 当deepin${ver2} 不存在时,此时安全更新的ver2版本应该使用0.1 主线版本使用1 避免与主线版本冲突, 参考的形式`upstreamversion-1deepin0.1+dp23u1` |
| 67 | +- 当 deepin${ver2} 不存在时,此时安全更新的 ver2 版本应该使用 0.1 主线版本使用 1 避免与主线版本冲突, 参考的形式`upstreamversion-1deepin0.1+dp23u1` |
65 | 68 | - 对于非上述情况时应当遵循上文的版本号规范提交。 |
66 | | -> [!TIP] |
67 | | -> 注: dp为deepin的缩写 |
| 69 | + > [!TIP] |
| 70 | + > 注: dp 为 deepin 的缩写 |
68 | 71 |
|
69 | 72 | > [!TIP] |
70 | 73 | > 注: 历史遗留的版本号不在本次讨论范围内,新的提交的软件包构建集成等应遵循新版本规范 |
71 | 74 |
|
72 | | - |
73 | 75 | #### 7. 总结 |
74 | | -##### BNF规则 |
| 76 | + |
| 77 | +##### BNF 规则 |
| 78 | + |
75 | 79 | ``` |
76 | 80 | <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
77 | 81 | <nonzero_digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
@@ -126,16 +130,18 @@ native软件包没有-的连字符,因此直接在上游版本号后添加+dee |
126 | 130 | 附带一个 BNF Playground: https://bnfplayground.pauliankline.com/ |
127 | 131 |
|
128 | 132 | > [!TIP] |
129 | | -> 可参考BNF验证自己写的版本号是否符合规范 |
| 133 | +> 可参考 BNF 验证自己写的版本号是否符合规范 |
130 | 134 |
|
131 | 135 | ##### 完整的构造 |
| 136 | + |
132 | 137 | `upstreamversion-${ver1}deepin${ver2}[+dp26u${num}][+u${ver3}][+rb${ver4}]` |
133 | | - - ${ver1} 来自deepin的上游的版本 |
134 | | - - ${ver2} 来自deepin的patch版本,这块必须,且从0开始 如无任何修改则不需要加该字 |
135 | | - - [+dp26u${num}] 安全补丁版本,这块只有在多版本发布安全补丁时需要 |
136 | | - - [+u${ver3}] CI编译版本,只有CI开发环境编译时有 |
137 | | - - [+rb${ver4}] rebuild次数,这块只有rebuild时才添加 |
138 | | - - 主线 GitHub 版本为 `upstreamversion-${ver1}deepin${ver2}` |
139 | | - - 主线仓库会有 [+rb],不在GitHub,在OBS生成; |
140 | | - - 安全更新在 GitHub,非主线,有 [+dp26u${num}]; |
141 | | - - [+u${ver3}] 为开发版本,在GitHub内不出现,在仓库内不出现,但是出现在 CI 中 |
| 138 | + |
| 139 | +- ${ver1} 来自 deepin 的上游的版本 |
| 140 | +- ${ver2} 来自 deepin 的 patch 版本,这块必须,且从 0 开始 如无任何修改则不需要加该字 |
| 141 | +- [+dp26u${num}] 安全补丁版本,这块只有在多版本发布安全补丁时需要 |
| 142 | +- [+u${ver3}] CI 编译版本,只有 CI 开发环境编译时有 |
| 143 | +- [+rb${ver4}] rebuild 次数,这块只有 rebuild 时才添加 |
| 144 | +- 主线 GitHub 版本为 `upstreamversion-${ver1}deepin${ver2}` |
| 145 | +- 主线仓库会有 [+rb],不在 GitHub,在 OBS 生成; |
| 146 | +- 安全更新在 GitHub,非主线,有 [+dp26u${num}]; |
| 147 | +- [+u${ver3}] 为开发版本,在 GitHub 内不出现,在仓库内不出现,但是出现在 CI 中 |
0 commit comments