Semantic Versioning

语义版本规范。(Semantic Versioning Specification.)

Github stars Tracking Chart

语义化版本控制的规范是由 Gravatars 创办者兼 GitHub 共同创办者 Tom Preston-Werner 所建立。
\r\n

在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的套件越多,你就越有可能在未来的某一天发现自己已深陷绝望之中。\r\n

在依赖高的系统中发布新版本套件可能很快会成为恶梦。如果依赖关系过高,可能面临版本控制被锁死的风险(必须对每一个相依套件改版才能完成某次升级)。而如果依赖关系过于松散,又将无法避免版本的混乱(假设兼容于未来的多个版本已超出了合理数量)。当你专案的进展因为版本相依被锁死或版本混乱变得不够简便和可靠,就意味着你正处于依赖地狱之中。
\r\n

作为这个问题的解决方案之一,作者提议用一组简单的规则及条件来约束版本号的配置和增长。这些规则是根据(但不局限于)已经被各种封闭、开放源码软件所广泛使用的惯例所设计。为了让这套理论运作,你必须先有定义好的公共 API 。这可以透过文件定义或代码强制要求来实现。无论如何,这套 API 的清楚明了是十分重要的。一旦你定义了公共 API,你就可以透过修改相应的版本号来向大家说明你的修改。考虑使用这样的版本号格式:XYZ (主版本号.次版本号.修订号)修复问题但不影响API 时,递增修订号;API 保持向下兼容的新增及修改时,递增次版本号;进行不向下兼容的修改时,递增主版本号。
\r\n

作者称这套系统为“语义化的版本控制”,在这套约定下,版本号及其更新方式包含了相邻版本间的底层代码和修改内容的信息。
\r\n

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

Main metrics

Overview
Name With Ownerninenines/cowboy
Primary LanguageErlang
Program language (Language Count: 3)
Platform
License:ISC License
所有者活动
Created At2011-03-09 19:55:52
Pushed At2025-04-15 11:36:28
Last Commit At2025-02-17 15:18:23
Release Count54
Last Release Name2.13.0 (Posted on 2025-02-18 09:46:00)
First Release Name0.2.0 (Posted on )
用户参与
Stargazers Count7.4k
Watchers Count294
Fork Count1.2k
Commits Count2.2k
Has Issues Enabled
Issues Count1145
Issue Open Count41
Pull Requests Count181
Pull Requests Open Count8
Pull Requests Close Count324
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private