语义化版本号 Sematic Versioning

之前写过一篇 说说版本号 ,探讨了版本号的一些传统约定。 既然版本号只是约定,也就是说并没有严格的规范。那这样就不利于程序自动处理版本号带来的一些问题,如自动判断对某个版本的库的依赖等。

Gravatars 的创始人 Tom Preston-Werner几年前就制作了一个 语义化版本号 的规范,目前这个规范已经到了 2.0 版本,详见: http://semver.org/


所谓“语义化版本号”,就是在版本号中体现出语义,或者说版本号本身是有意义的,不再是随意给的一个数字。这个规范将版本号中每个数字的意义都做了比较严格的说明。当然,其中大部分内容还是沿用我们之前说过的业内的约定,所以,对于有版本号意识的开发者来说,接受这个规范是很容易的。

规范详细的条文已经有很多中文翻译,如 http://blog.neekey.me/blog/2012/02/27/semantic-versioning/  , 这里就不再赘述。总结一下语义化版本号的中心思想:

  1. 版本号是一个唯一标示:根据版本号可以唯一确定一套源代码,源代码的任何微小修改都要反映在版本号上。
  2. 版本号是可比较的,有先后关系:新的版本号需要比旧的版本号“大”
  3. 版本号体现 api 的变化和兼容性:不向前兼容的重大变化必须修改主版本号

 

“语义化版本号” 并不是什么太新鲜的东西,并不是完全创造出来的,只不过是将原来已经比较流行的做法做了些规范。但是,它的意义非常重大,原文中说的好:”close isn’t good enough”。‘接近’还不够好,只有有了规范,有了标准,才有可能真正保证整个事情运行流畅。

1 thought on “语义化版本号 Sematic Versioning”

Leave a Reply

Your email address will not be published. Required fields are marked *