一、应用版本更迭的必要性
二、基本原则
如果产品版本依赖定义得过于松散,你难免会被版本穿插所伤,因此,用一组简单的规则和要求来约束版本号的分配和增长规则,你必须预先定义好自己的公共API,这可以通过文档定义或代码强制要求来实现。无论如何,这套API的清楚明了是十分重要的。一旦你定义了公共API,你就可以通过修改相应的版本号来通知大家你的修改。
1、版本号格式:X.Y.Z(主版本号,次版本号,补丁版本号)
2、修复Bug但不影响API增长补丁版本号;
3、API保持向下兼容的增加/修改时增长次版本号;
4、进行不向下兼容的修改时增长主版本号。
三、产品版本命名规范
1、使用语义版本命名的软件系统必须定义一套公共API。这套API可以是在代码中申明或是用严格的文档定义。不管怎样做,它都应该清楚明了。
2、正常的版本号必须使用X.Y.Z的形式并且X/Y/Z是非负整数。X是主版本号,Y是次版本号,Z是补丁版本号。版本号每次必须只能增长1。例如:1.9.0->1.10.0->1.11.0。
3、当主版本号增长时,次版本号和补丁版本号必须清零。当次版本号增长时,补丁版本号必须清零。例如:1.1.9->2.0.0,2.1.7->2.2.0。
4、一旦发布了具有版本的包,那个版本的内容必须不能再更改。任何修改必须发布成一个新版本。
5、主版本号0 (0.y.z)是用来进行初始开发时使用的。任何东西都可能在任何时候改变。公共API此时应该被认为是经常变动的。
6、版本1.0.0开始定义公共API。这个版本及以后的版本号的增长方式将依赖于公共API以及它如何变化。
7、如果单一子产品有任何向下兼容的bug修复发生,补丁版本号Z (x.y.Z | x > 0)必须增长1。“bug修复”被定义为内部进行的修复非正常行为的修复工作。
8、如果单一子产品进行了新的并且向下兼容的公共API添加、优化、修改,次版本号Y (x.Y.z | x > 0)必须增长1。如果任何公共API被标记为“过期”,次版本号必须增长1;如果有大量的新功能或改进在内部代码中发生,次版本号可以增长1;这其中也可以包含补丁级别的修改。当次版本号增长时补丁版本号必须清零。
9、如果单一子产品对公共API有任何向下不兼容的修改,或者两个及两个以上子产品同时发布新特性,或者主产品开辟新业务模式,主版本号X (X.y.z | X > 0)必须增长1。这其中也可以包含次版本和补丁版本级别的修改。当主版本号增长时次版本号和补丁版本号必须清零。