扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go学习
  • Go学院

    • Go小课
    • Go小考
    • Go实战
    • 精品课
  • Go宝典

    • 在线宝典
    • B站精选
    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
  • Go下载

    • 视频资源
    • 文档资源
Go求职
  • 求职服务

    • 内推互助
    • 求职助力
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
Go友会
  • 城市
  • 校园
推广返利 🤑
实验区
  • Go周边
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go学习
  • Go学院

    • Go小课
    • Go小考
    • Go实战
    • 精品课
  • Go宝典

    • 在线宝典
    • B站精选
    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
  • Go下载

    • 视频资源
    • 文档资源
Go求职
  • 求职服务

    • 内推互助
    • 求职助力
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
Go友会
  • 城市
  • 校园
推广返利 🤑
实验区
  • Go周边
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • Go工程化规范设计

    • 前言
    • 开源规范
    • 文档规范
    • 版本规范
    • Git规范
    • 目录结构
    • 编码规范
    • 代码测试
    • 性能分析
    • API 设计
    • 项目管理
    • 研发流程
    • 参考资料
  • Go工程化标准实践

    • 前言
    • 项目结构
    • API 设计
    • 配置管理
    • 模块管理
    • 测试
    • 参考资料

扫码订阅《 》或入驻星球,即可阅读文章!

版本规范


Kyle

一般使用 语义化版本规范(SemVer,Semantic Versioning),即 主版本号.次版本号.修订号(X.Y.Z,其中 X、Y 和 Z 为非负的整数,且禁止在数字前方补零)。

也有先行版本号与编译版本号 v1.2.3-aplha.1+001:即把先行版本号(Pre-release)和版本编译元数据,作为延伸加到了主版本号.次版本号.修订号的后面:X.Y.Z[-先行版本号][+版本编译元数据]。

  • 主版本号(MAJOR):不兼容的 API 修改。
    • 必须在有任何不兼容的修改被加入公共 API 时递增。其中可以包括次版本号及修订级别的改变。每当主版本号递增时,次版本号和修订号必须归零。
    • 主版本号为零(0.y.z)的软件处于开发初始阶段,由于一切都可能随时被改变,不应该被视为稳定版。1.0.0 被界定为第一个稳定版本,之后的所有版本号更新都基于该版本修改。
  • 次版本号(MINOR):向下兼容的功能性新增及修改。一般偶数为稳定版本,奇数为开发版本。在任何公共 API 功能被标记为弃用时也必须递增,当有改进时也可以递增。其中可以包括修订级别的改变。每当次版本号递增时,修订号必须归零。
  • 修订号(PATCH):向下兼容的问题修正,即 bug 修复。
  • 先行版本号:该版本不稳定,可能存在兼容性问题。
  • 编译版本号:编译器在编译过程中自动生成,开发者只定义其格式、不进行人为控制。

使用建议:

  • 使用 0.1.0 作为首个开发版本号,在后续每次发行时递增次版本号。
  • 稳定版本并第一次对外发布时版本号可定为 1.0.0。
  • 严格按照 Angular commit message 规范提交代码时:
    • fix 类型的 commit 可将修订号 +1。
    • feat 类型的 commit 可将次版本号 +1。
    • 带 BREAKING CHANGE 的 commit 可将主版本号 +1。

# 自动生成

IAM 项目采用 gsemver 自动生成版本号,参考 iam/ensure_tag.sh (opens new window)。

Makefile 和 Shell 脚本用到的所有版本号使用 iam/common.mk (opens new window) 中的 VERSION 变量。

VERSION := $(shell git describe --tags --always --match='v*')

# 执行 git describe 时,符合条件的 tag 指向最新提交,则只显示 tag 的名字,否则会有相关的后缀描述该 tag 后有多少次提交,以及最新的提交 commit id。比如 v1.0.0-3-g1909e47:
# 3:表示自打 tag v1.0.0 以来有 3 次提交。
# g1909e47:g 为 git 的缩写,在多种管理工具并存的环境中很有用处。
# 1909e47:7 位字符表示为最新提交的 commit id 前 7 位。
1
2
3
4
5
6
  • 自动生成