版本说明
Yii版本控制
本文总结了Yii的版本控制策略,我们当前的版本控制策略是 语义化版本 的一种变体。
在核心开发团队中,我们已经多次强调了保持 2.0.x 发行包向下兼容的重要性。但是,理想很丰满,现实很骨感。关于BC是什么,请参阅 向下兼容 文档的详细描述。
总之,我们的 Yii 2 版本控制策略如下:
版本号
版本号的格式为 2.x.y.z
,对于 z
为 0
的版本,可以跳过z
。
这里没有讨论未知的 Yii 3,因为我们希望它像 2.0 而不是 1.0。我们预计这种情况每3到5年才会发生一次,这取决于外部技术的进步(比如 PHP 从 5.0 升级到 5.4)。
2.X.0
: 主版本
向后兼容性破坏版本,其中包含可能破坏 BC 的主要特性和更改。从早期版本升级可能不是一件小事,但一个完整的升级指南将可用。
- 主要包含新特性和bug修复
- 包含从补丁发布中合并的小功能和 bug 修复
- 可能包含破坏 BC 的更改,这些更改记录在
UPGRADE-2.X.md
的文件中 - 发布周期约为 12 个月或更长时间
- 需要预发行版:
2.X.0-alpha
,2.X.0-beta
,2.X.0-rc
- 需要大量的新闻发布和营销工作
2.x.Y
: 次要版本
次要版本,主要与 BC 兼容。理想情况下,我们希望它们只包含不影响向后兼容性的更改。然而,无法总是保持所有内容 100% 与 BC 兼容, 因此,更新日志会记录在 UPGRADE.md
中。实际上,自 2.0.x 版本发布频率越来越高以来,我们也在添加一些小功能,以便用户能更早地使用它们。
- 主要包含 bug 修复和增强(#enh)
- 应该基本上是向后兼容的,以确保无需担心升级。只有少数例外是允许的,这些例外在
UPGRADE.md
中有记录 - 发布周期约为 1 - 2 个月
- 不需要预发行版( alpha,beta,RC )
- 应该经常合并回主分支(至少每周手动一次)
- 伴随着新闻公告,项目的官网将会更新它
2.x.y.Z
: 补丁版本
补丁版本,应该是 100% 与 BC 兼容的,只包含错误修复。没有新闻公告或项目站点更新(除非包含重大/安全问题修复)。
发布过程大部分是无感的。
- 只包含bug修复,不包含特性
- 必须100%向后兼容,以确保无需担心升级。唯一的例外是安全问题可能需要破坏 BC
- 发布周期大约是 1 - 2 周
- 不需要预发行版( alpha,beta,RC )
- 应该在发布时合并回主分
分支策略
master
分支是当前稳定的主版本及2.0.x
系列版本的开发分支每个新的主要版本将在一个以版本号命名的分支上开发,例如
2.1
。一旦一个新的主要发行
2.n
准备好后,在master
下,创建一个名为2.(n-1).x
的维护分支。
例如,如果2.1.0
版本是稳定发布的,那么就会创建一个2.0
分支,并且现在会在master
上开发(cmp. composer 分支命名模式)创建 tags
2.x.y.z
和2.x.y
分支,去标记补丁发布,当2.x.y.0
发布时,0
将被忽略。在
2.n.x
维护分支上的更改,将不断地合并回master
下图展示了在一段时间内更改提交历史记录的分支:
发行
框架和官方扩展项目相互独立发布,即框架和扩展之间的版本号不匹配。应用模板总是和框架一起发布的。
上面描述的发布周期只适用于核心框架。扩展是按需发布的。
扩展很可能在很长一段时间内都没有新版本,因为它没有得到任何 bug 修复或增强。
💖喜欢本文档的,欢迎点赞、收藏、留言或转发,谢谢支持!
作者邮箱:zhuzixian520@126.com,github地址:github.com/zhuzixian520