欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 语义版本控制

语义版本控制

2025/2/9 13:53:20 来源:https://blog.csdn.net/qq_30460361/article/details/144097182  浏览:    关键词:语义版本控制

注意: 本文内容于 2024-11-27 22:25:05 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:语义版本控制。感谢您的关注与支持!

由于自己平时喜欢写点小玩意,自然而然的就碰到了许多志同道合的人。

大家都会将自己写的工具包发布到中央仓库,我也不例外。在对比中发现我的版本命名太过随便,因此特意学习一下常见的版本控制规范——语义化版本 2.0.0 | Semantic Versioning。

一句话概括,版本格式为X.Y.Z

  • X: 主版本号。主版本号变更,表示你做了不兼容的API修改
  • Y: 次版本号。次版本号变更,表示你做了向下兼容的功能性新增
  • Z: 修订号。修订号变更,表示你做了向下兼容的问题修正

重要规范如下

最新和更详细的说明还是自行查阅语义化版本 2.0.0 | Semantic Versioning

  1. 必须定义公共API
  2. 必须采用X.Y.Z的格式,且X、Y、Z为非负的整数。版本更新时,要根据实际情况,进行数值递增
  3. 一旦版本发行后,禁止修改版本内容
  4. 主版本号为0(0.Y.Z)的程序,处于开发初始阶段,这样的公共API可能会存在变化
  5. 先行版本号命名规范示例: 1.2.1-alpha.1、1.2.1-alpha.2
  6. 在语义版本前面加v是一种git常见标签的命名方式。

语义版本的在线正则校验工具

  • 用于支持按组名称提取的编程语言:Perl、PHP、R、Python、Go
  • 用于支持按编号提取的编程语言:JavaScript、Java、C#、Perl、PHP、R、Python、Go

下面给出Java的示例工具类

/*** Semantic Versioning** @author <a href="https://meethigher.top">chenchuancheng</a>* @see <a href="https://semver.org/">Semantic Versioning 2.0.0 | Semantic Versioning</a>* @since 2024/11/27 23:07*/
public class SemVer {/*** 语义版本的正则格式*/private static final String SEMVER_PATTERN = "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$";/*** @param semVer 语义版本号* @return true表示输入值符合语义版本的规范*/public static boolean isValidSemVer(String semVer) {if (semVer == null || semVer.isEmpty()) {return false;}return semVer.matches(SEMVER_PATTERN);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com