语义化版本控制规范(SemVer)
参考链接 https://semver.org/lang/zh-CN/
语义化版本 2.0.0
(透过版本号的改变来传达信息.)
摘要
版本格式: 主版本号.次版本号.修订号
版本号递增规则如下:
1.主版本号: 做了不兼容的API修改.
2.次版本号: 做了向下兼容的功能性新增.
3.修订号: 做了向下兼容的问题修正.
规范摘要:以下以x.y.z表示版本号格式
- 上一级版本号递增时,下面的版本号必须归零.
- 举个简单的例子就可以展示语义化的版本控制如何让依赖地狱成为过去。假设有个名为“救火车”的函式库,它需要另一个名为“梯子”并已经有使用语义化版本控制的包。当救火车创建时,梯子的版本号为 3.1.0。因为救火车使用了一些版本 3.1.0 所新增的功能, 你可以放心地指定依赖于梯子的版本号大等于 3.1.0 但小于 4.0.0。这样,当梯子版本 3.1.1 和 3.2.0 发布时,你可以将直接它们纳入你的包管理系统,因为它们能与原有依赖的软件兼容。
- 0.y.z中 0 为主版本号,如 0.1.0 是初始化开发版本.并在后续的每次发行时递增次版本号.
- 主版本为0时,表示仍在快速开发阶段,每天都在改变API.
- 如果不小心把不兼容的改版当成了次版本号发行了该怎么办?
- 一旦发现自己破坏了语义化版本控制的规范,就要修正这个问题.
- 发行一个新的次版本号恢复向下兼容.
- 不能修改已发行的版本.
- 将有问题的版本号记录下来,告诉使用者问题所在,让他们知道这是一个有问题的版本.
- 如何处理即将弃用的功能?
- 更新文件说明让使用者知道这个改变.
- 在适当时机将弃用的功能透过新的次版本号发布.
- 在新的主版本完全移除弃用功能前,至少有一个次版本包含这个即将弃用的说明信息,这样使用者才能平顺地过渡到新版API中.
转载于:https://www.cnblogs.com/sweetXiaoma/p/10349647.html
语义化版本控制规范(SemVer)相关推荐
- Go (Golang) 工具之自动化版本工具 gsemver | semver 语义化版本规范
文章目录 Go (Golang) 工具之gsemver 什么是gsemver 动机 感谢 gsemver 安装 gsemver 使用 准备 git HEAD 基础 CLI 配置文件 语义化版本 2.0 ...
- 语义化版本号规范(SemVer)
概念 语义化的版本控制(Semantic Versioning),简称语义化版本,英文缩写为 SemVer. 语义化版本通过一组简单的规则及条件来约束版本号的配置和增长.这些规则是根据(但不局限于)已 ...
- 聊聊 npm 的语义化版本(Semver)
前言 现在我们要开发一个项目,我们都知道为了方便项目管理,要写一个版本号,那开发的时候初始的版本号是多少呢?是 1.0.0 还是 0.0.1 开始? 如果一个版本号为 X.Y.Z,什么时候是 X 应该 ...
- 语义化版本控制模块-Semver
执行某些命令的时候,你是否遇到过提醒版本过低,需要升级版本的提示,那么对于版本号,是以一个怎样的规则来进行的限制和匹配的呢? semver, 是一个语义化版本号管理的模块,可以实现版本号的解析和比较, ...
- php 语义解析,[扩展推荐] PHP 语义化版本(SemVer)辅助库
SemVer 是由 Chris Kankiewicz 开发的一个语义化的提取版本号中各种信息的 PHP 辅助库.支持解析.递增和比较等特性. 下面是初始化 SemVer\Version 对象的基本用法 ...
- 软件版本阶段与语义化版本(SemVer)
文章目录 软件版本阶段 语义化版本 FAQ npm中package.json文件依赖项版本号 参考 软件版本阶段 Alpha版:预览版或内部测试版,一般不向外部发布,会有很多 bug. Beta版:公 ...
- 【转】语义化版本 2.0.0
转自:语义化版本 2.0.0 | Semantic Versioning 语义化版本 2.0.0 摘要 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API ...
- Semver(语义化版本号)扫盲
最近Github 10周年在朋友圈里沸沸扬扬刷屏,小编在工作中却惊讶的发现不少同事对版本号中的beta和rc没有概念,使用npm install package@next时,也不清楚next代表的含义 ...
- Semver语义化版本号和npm包之semver的相关使用
依赖地狱 通俗而言,"依赖地狱"指开发者安装某个软件包时,发现这个软件包里又依赖不同特定版本的其它软件包.随着系统功能越来越复杂,依赖的软件包越来越多,依赖关系也越来越深,这个时候 ...
最新文章
- 使用js冒泡实现点击空白处关闭弹窗
- python不想学了-嫌Python太慢但又不想学C/C++?来了解下JIT技术
- ubuntu10.04下安装windows7
- 去除a链接+java正则_JavaScript实现正则去除a标签并保留内容的方法【测试可用】...
- python if elif else_python:通讯录(字典+while+if/else)
- iOS - UIActivityIndicatorView
- Android SQLiteDatabase.query()各个参数的意义
- [已解决]安装MPICH2(x64)时显示需要安装NET FRAMEWORK 2.0.50727
- 论文降重神器,一键毕业,真香!错过就后悔一整年的论文降重指南
- Qt实现名字的幸运大抽奖
- html组合标题,如何组合标题关键词(影响标题的5个因素)
- mt7620 外置pa_openwrt在mt7620a芯片上对外置PA的支持
- 用HTML+CSS做一个简单好看的环保网页
- spring-boot 2.5.6 问题:WARN: This connection is using TLSv1.1
- 关于如何打破传统阅读体验的一些想法
- 进入BeOS的花花世界 系列五
- Rstudio的界面如何恢复成四个界面
- luoguP1080[NOIP2012提高组]国王游戏
- Python资源大全中文版
- 【原创】VBA学习笔记(302)VBA的变量的作用范围 与 生命周期