语义版本控制简介
介绍
开发人员和软件工程师长期以来一直面临“依赖地狱”的问题。当在一个项目中安装依赖项的特定版本时,该依赖项可能会导致您的应用发生重大更改。常见的解决方案是将依赖项冻结在特定版本,以避免版本问题。
但是,您的依赖项可能还会有依赖项!当然,这些依赖项可能还会有依赖项,依此类推。发布新的软件包更改很容易破坏多个依赖项,并导致您的应用出现完整性或可用性问题。
语义版本控制 (或 Semver) 是库、应用和框架实施的最常见版本控制策略。它涉及一套通用规则,开源社区成员和业界人士都遵循该规则。本指南将提供语义版本控制的高级概述,包括开发人员如何使用语义版本控制标准在 Git 中标记版本。
语义版本控制 2.0.0
语义版本控制会递增三个版本号:主要版本号、次要版本号和补丁号。每个特定补丁号都会根据一组特定条件递增。
主要版本
当存在与之前主要版本不兼容的功能时,主版本会递增。例如,当从 1.5.2 递增到 2.0.0 时,版本 1.5.2 中的某些功能可能不再起作用,或者在 2.0.0 中已被弃用。这将向您的应用或库的用户发出信号,如果您决定升级,应用中可能会发生更改,这会导致依赖于您的应用的现有功能中断。这些更改通常称为重大更改。
次要版本
当您向应用或库添加功能时,次要版本号会递增。这些新功能不应影响旧版本中的功能。应用或库的用户不应被要求更新其依赖项,因为次要版本号旨在增加功能,而不是纠正功能。例如,如果您将应用从 2.1.42 升级到 2.2.0,您现有的应用仍应正常运行,因为所有更改均不会造成破坏。这通常称为向后兼容。
补丁版本
当应用或库中未添加任何额外功能且更改仍向后兼容时,补丁版本会递增。通常,补丁版本用于指示错误修复,因此开发人员通常会升级到较新的次要版本以确保向后兼容性,同时获取最新的功能和安全相关更新。
语义版本注释
您可能需要满足其他版本控制要求,例如 alpha 版本或元数据信息。如果您有未发布的应用和库,您可能还希望对它们进行不同的版本控制。Semver 支持这两种用例。
元数据和预发布版本
可以使用加号 (+) 将元数据添加到语义版本。仅在元数据方面不同的代码版本具有相同的优先级。这意味着版本 1.4.2+20130313144700 应与版本 1.4.2+201309868639 具有相同的功能。此元数据通常用于构建信息,必须使用兼容 ASCII 的字符编写。同样,可以通过附加连字符 (-) 和版本名称来指示预发布版本(例如 1.6.4-beta)。预发布版本旨在告知您的应用或库的用户此版本可能尚不稳定。
初期发展
如果您的代码目前处于开发的初始阶段,您可以将代码标记为版本 0.xx。版本 0 通常不被认为是稳定的,理想情况下,不应在未阅读每个增量的更改日志的情况下将其用于生产。这是因为任何领域的每次增量都可能导致任何变化。一些开源项目使用此策略,因为每次迭代后其代码库都会发生很大变化。
对代码进行版本控制
现在您已经了解了适用于您的应用和库的正确版本控制策略,您还可以在源代码管理系统中对代码进行版本控制。Git 支持通过 Git Tags 对代码进行版本控制。以下代码片段将您的代码标记为版本 1.0.0。
git tag 1.0.0
这会将当前提交链接到给定的标签编号。只需运行以下代码片段,即可轻松查看版本。
git checkout 1.0.0
您可以将标签与语义版本控制结合使用以跟踪您的发布,以确保其他依赖您的应用或库的人可以识别每个版本的一般含义。
结论
Semver 是众多潜在版本控制策略之一,但它是当今各行各业和开源项目中最常用的策略。在内部,它可以帮助确保您的 API 仍然相互兼容。同时,如果您是一位热心的开源贡献者,其他人可能会依赖此版本控制策略来确定何时要为其应用安装较新版本的依赖项。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~