首页/开发/Git 与协作速查/日历版本号 CalVer

日历版本号 CalVer

用日期构造版本号(如 2026.10.0、2026.10.12):发布频率高的产品能直观看到时间维度,也可与语义化规则组合。

Git 与协作速查开发更新于 2026-10-13

CalVer 是什么

CalVer 是用日期构造版本号(如 2026.10.0、2026.10.12):发布频率高的产品能直接从版本号读出时间维度。它可与语义化版本规则组合——日期表达时间、尾段由团队定义语义。选型关键是对外的兼容性承诺是否需要靠版本号表达,日历版本本身不表达兼容性。

基本信息

常见形式YYYY.MM 或 YYYY.MM.DD,可选补丁位
适用高频发布、兼容性契约弱或按时间交付的产品
组合方式日期段加自定义语义段,尾段含义由团队定义
对比 SemVerSemVer 用主次补丁表达兼容性,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 | head

CalVer 与 SemVer 对照

维度CalVerSemVer
表达重点时间与发布节拍兼容性变化
升位规则按日期推进按变更性质
适用场景高频发布产品有公共 API 的库
依赖方解读看日期与批次看是否破坏兼容
混用时要把兼容性信号定义清楚:例如年份主段可包含破坏性变更、日期段只做发布标识,规则写进文档并公告。
跨年切换要验证排序与升级路径:2026.12 到 2027.01 的阶段变化要过一遍 CI 与包工具的比较逻辑。

易错点

  • 月份不零填充:2026.2 与 2026.10 按字符串排序会颠倒,版本比较出错,统一补零为两位格式
  • 跨年切换不验证:阶段切换要检查 CI 与依赖工具的比较逻辑,避免升级路径断裂
  • 把 CalVer 当兼容性承诺:依赖方可能误读日期变化的含义,规则要写进文档并提前公告
  • 与 SemVer 工具链冲突:按语义解析的依赖工具把日期三段当普通版本,破坏性判断可能失误,先评估工具兼容性
  • 标签前缀不统一:v2026.10 与 2026.10 并存会让排序与脚本解析失败,团队先统一前缀

数据来源与参考

  • CalVer 规范(calver.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌