怎样为软件的不同版本命名?

Tags: 系统设计 

目录

说明

Semantic Versioning是一份版本命名规则,在软件开发过程中可以依据这份标准,对不同的版本进行命名。

规范

Semver规定的版本号格式为:

 正式版本:  MAJOR.MINOR.PATCH
 预发布版本:MAJOR.MINOR.PATCH-XXX

MAJOR是主版本号,不兼容上一个版本的API的时候,使用新的MAJOR。

MINOR是次版本号,在兼容上一个版本API的前提下,增加了新的特性,使用新的MINOR。

PATCH是补丁号,在兼容上一个版本API的前提下,修复了Bug。

-XXX用来标记预发布版本。

示例

0.y.z,即MAJOR为0,命名处于初级阶段,尚不稳定的版本。

1.0.0,第一个公开版本或正式版本,之后的版本需要考虑是否要兼容以往版本。

x.y.Z,x>0,修复Bug后,且兼容性不变,需要将Z增加。

x.Y.z,x>0,增加新特性,且兼容性不变,需要将Y增加,将z归零。

X.y.z,x>0,兼容性变化时,需要将X增加,y和z归零。

1.0.0-alpha,1.0.0-alpha.1,预发布版本增加以-开头的后缀,表示当前版本尚不稳定。

1.0.0-alpha+20130313144700,可以用以+开头的后缀,标记编译信息。

下面是一个软件的版本变更过程:

1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0

版本与开发分支

可以参照client-go中的做法:

MAJOR或者MINOR更新的时候,创建对应的Branch和TAG
PATCH更新的时候,创建对应的TAG
Master是最新状态的代码

具体的开发过程,可以参考beego的做法:

git project

参考

  1. Semantic Versioning 2.0.0
  2. client-go
  3. beego git branch

系统设计

  1. Netflix 的异地多活设计: Active-Active for Multi-Regional Resiliency
  2. Facebook 的缓存系统实践经验《Scaling Memcache at Facebook》
  3. 多机数据系统的正确性与一致性
  4. 《大型网站技术架构: 核心原理与案例分析》阅读摘录
  5. 《分布式金融架构课》阅读笔记2: 线性一致的分布式数据系统的实现过程
  6. 《分布式金融架构课》阅读笔记1: 单机&多机并发/多副本读写正确性和一致性
  7. 《消息队列高手课》阅读笔记: Rabbit/Rocket/Kafka/模型/消息事务/保序等
  8. 《消息队列高手课》阅读笔记: Rabbit/Rocket/Kafka/模型/消息事务/保序等
  9. 《Redis核心技术与实践》阅读笔记: 数据类型/存储开销/Rehash/案例等
  10. 《Redis核心技术与实践》阅读笔记: 数据类型/存储开销/Rehash/案例等
  11. 《高并发系统设计40问》阅读笔记: 数据库/缓存/消息队列/分布式服务
  12. 《高并发系统设计40问》阅读笔记: 数据库/缓存/消息队列/分布式服务
  13. 《MySQL实战45讲》阅读笔记: 索引类型/数据可靠性/事务/间隙锁/临时表等
  14. 系统性能分析方法论: 统计图谱工具
  15. 张磊《深入剖析Kubernetes》专栏的阅读笔记
  16. 代理服务软件haproxy、nginx、envoy对比,以及开源的API网关项目对比
  17. 蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义
  18. 阿里巴巴的应用限流和服务降级是怎样实现的?|如何打造平台稳定能力
  19. 陈皓《左耳听风》专栏的阅读笔记(持续更新)
  20. 好雨云帮,一款不错的国产开源PaaS
  21. 怎样为软件的不同版本命名?
  22. 怎样选择开源项目的license?
  23. Glusterfs的架构
  24. 怎样设计一个企业级的PaaS平台?
  25. 几种常见的LDAP系统
  26. DNS SRV介绍(一种用DNS做服务发现的方法)
  27. DNS,DNS-Domain Name System
  28. 思科的网络设备
  29. 虚拟化技术汇总
  30. 认证与授权系统的汇总
  31. 高可用实现方法汇总
  32. 编译器汇总
  33. Linux系统的优化方法
  34. CentOS7的一些变化
  35. 分布式系统的一些知识
  36. 计算机编程语言的特性汇总
  37. 网络通信的一些基础知识
  38. PCIE总线的一些知识
  39. 操作系统的API
  40. 网卡的一些知识
  41. Linux系统的构建过程
  42. 数据结构与算法
  43. CPU的相关知识

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球