语义版本控制:为什么应该使用它
语义版本控制(简称为SemVer),是一种版本控制系统,在过去几年中一直在增长。随着每天都有新的插件、插件、扩展和库被构建,拥有一种通用的版本控制软件开发项目的方法是一件好事,可以帮助我们跟踪正在发生的事情。
什么是SemVer?
SemVer是一个三组件的系统,格式为x.y.z
地点:
x
表示主版本y
“次要版本”z
代表一个补丁
所以你有:Major.Minor.Patch
.
SemVer是如何工作的?
SemVer依赖于在正确的时间增加正确的组件。因此,决定应该发布哪种类型的版本很简单。
如果你主要是修复bug,那么这将被归类为补丁,在这种情况下,你应该碰撞z
.
类中实现新特性向后兼容路,那么你会撞y
因为这是a小的版本。
另一方面,如果你实现了新的东西,很可能打破现有的API,你需要撞一下x
因为它是主要的版本。
为什么SemVer ?
因为这是有道理的。如果说我学到了什么,那就是没有指导方针的版本控制基本上毫无意义。移动到4.2?好的,很好。为什么?为什么不是5个?为什么不是4.1.1?为什么不是4.11?为什么不是4.1.oh-snap-new-version?
遵循严格的指导原则有助于赋予版本号以意义。
例如,如果您看到版本1.3.37,那么您就会知道这是第一个主要版本,但是已经有3个小版本带来了新功能。然而,你也会注意到这是这个小版本的第37个补丁,这意味着有很多bug(或大或小)。
它也很有帮助依赖关系管理.假设您正在构建一个名为独角兽
.不管出于什么原因,你有彩虹
作为一种依赖。当你第一次从盒子里拿出你的课本时,彩虹
版本是6.6.6(看起来很漂亮,是吧?)
这意味着你可以指定彩虹
作为一个独角兽
依赖项大于或等于6.6.0,但小于7.0.0。还记得第一个数字是如何与落后的世界末日变化的主要补丁吗?如果有一天彩虹
升级到7.0.0,没有什么能告诉你它不会坏独角兽
,所以最好保持版本6。
要记住的事情
现在您已经了解了SemVer是什么,让我们来看看人们在第一次开始使用它时可能会遇到的一些问题。
它从0.1.0开始
在使用SemVer时需要注意的一点是,它从0.1.0开始,而不是像人们想象的那样从0.0.1开始。如果你仔细想想,就明白了。您不是从一个补丁开始,而是从一组功能开始,作为项目的第一稿,因此是版本0.1.0。
1.0.0之前只是开发阶段
每当你构建一个新的软件时,总会有这样一个阶段,你会不停地问自己:我应该什么时候发布第一个正式的主要版本?
这里有一些提示可以帮助您回答这个问题:如果您的软件已经在生产中使用,或者有用户依赖于它,那么您的软件应该已经达到1.0.0。另外,如果您非常担心破坏当前的API,这同样可能意味着您应该已经在运行1.0.0了。
否则,请记住,1.0.0以下的版本基本上是开发高峰期,您将专注于完成工作。在1.0.0之前,你不应该害怕破坏东西,你会做任何需要做的事情,这样当达到1.0.0时,它是稳定的。
关于预发行版
在部署一个主要版本之前,您通常会进行大量的工作,需要一次又一次地进行测试,以确保一切正常。这通常是你想要预发布的时刻。
使用SemVer,可以通过在版本后添加连字符和标识符来定义预发布版本。例如,版本1.0.0的预发布可以是1.0.0-alpha.1。然后,如果需要另一个构建,它将变成1.0.0-alpha。2,依此类推。
最终的想法
如果您不使用SemVer,那么在下一个项目(或当前项目?)中没有合理的理由不使用它。它不仅有助于保持事情的干净和有意义,而且还将帮助其他可能将您的项目作为依赖项使用的人。