构建系统的版本
如果你依赖一个library,如果这个library没有用versions管理,那么当这个library升级后,你的软件有可能无法正常运行,因为升级后有可能library会引入破坏性的代码,让你的软件无法运行。所以你的软件需要依赖特定的library的特定版本。
但是这又会产生另一个问题,就是当library升级后,比如有security fix之后,你的软件无法及时应用上。因为你的软件依赖的是旧版本的library。
这时semantic version应运而生。
举个例子,版本号:7.1.15
7 is major version
(不向后兼容的修改,比如去掉了一些function,或者rename functions)
1 is minor version
(如果增加了一些东西,你增加minor version,而且设置patch version为0)
15 is patch version
(完全向后兼容,改了好像没改,security changes经常是修改patch version)
你的软件可以规定,只要major version是7的都可以运行,那么你的软件就可以在不引入破坏性代码的同时,获得最新的安全更新。
完美!