CalVer 是什么
CalVer 是用日期构造版本号(如 2026.10.0、2026.10.12):发布频率高的产品能直接从版本号读出时间维度。它可与语义化版本规则组合——日期表达时间、尾段由团队定义语义。选型关键是对外的兼容性承诺是否需要靠版本号表达,日历版本本身不表达兼容性。
基本信息
| 常见形式 | YYYY.MM 或 YYYY.MM.DD,可选补丁位 |
|---|---|
| 适用 | 高频发布、兼容性契约弱或按时间交付的产品 |
| 组合方式 | 日期段加自定义语义段,尾段含义由团队定义 |
| 对比 SemVer | SemVer 用主次补丁表达兼容性,CalVer 表达时间 |
| 标签示例 | git tag -a v2026.10.0 -m 'October 2026 release' |
典型使用场景
- 持续交付产品:每几天到每周发布,版本号按发布日期推进
- 平台与发行版:采用年份月份风格的版本命名
- 内部交付:按迭代排期验收,日期就是交付节拍
- 与 SemVer 混合:语义主段加日期尾段,兼顾两种诉求
- 文档与支持:用户报版本号即可推断年代与批次
常用示例
常用示例
# 常见形式(月份补零为两位)
2026.10.0
# 打标签
git tag -a v2026.10.0 -m 'October 2026 release'
# 按版本序查看,注意用版本排序而非字符串排序
git tag -l 'v2026*' --sort=-v:refname | headCalVer 与 SemVer 对照
| 维度 | CalVer | SemVer |
|---|---|---|
| 表达重点 | 时间与发布节拍 | 兼容性变化 |
| 升位规则 | 按日期推进 | 按变更性质 |
| 适用场景 | 高频发布产品 | 有公共 API 的库 |
| 依赖方解读 | 看日期与批次 | 看是否破坏兼容 |
混用时要把兼容性信号定义清楚:例如年份主段可包含破坏性变更、日期段只做发布标识,规则写进文档并公告。
跨年切换要验证排序与升级路径:2026.12 到 2027.01 的阶段变化要过一遍 CI 与包工具的比较逻辑。