
Bumpversion 是一个强大的版本管理工具,它通过解析(parse)当前版本字符串,识别出不同的版本部分(如 major, minor, patch, dev, build 等),然后根据用户指令递增或修改特定部分,最后再将这些部分序列化(serialize)成新的版本字符串。
在 bumpversion 的配置中,我们可以为每个版本部分定义一个 values 列表,指定该部分可能包含的所有合法值。当 bumpversion 尝试递增某个部分时,它会在该部分的 values 列表中查找当前值,并尝试将其替换为列表中的下一个值。
然而,当一个版本部分(例如 dev)的 values 列表中只包含一个值时,bumpversion 会将其视为已达到该部分的“最大值”。在这种情况下,如果你尝试对该部分执行 bump 操作,bumpversion 会抛出 ValueError: The part has already the maximum value... 错误,因为它认为没有下一个值可以递增。这对于实现“可选”的 dev 版本后缀(即有时需要 dev 后缀,有时不需要)构成了挑战。
为了实现可选的 dev 版本后缀,我们需要“欺骗” bumpversion,使其认为 dev 部分在未指定时也有一个“前一个”状态。最简单有效的方法是,在 [bumpversion:part:dev] 配置的 values 列表中,将第一个元素设置为空字符串 ""。
示例配置:
[bumpversion]
current_version = 1.5.3
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(-(?P<dev>.*)-(?P<build>\d+))?
serialize =
{major}.{minor}.{patch}-{dev}-{build}
{major}.{minor}.{patch}
[bumpversion:part:dev]
values =
""
dev
[bumpversion:part:build]
first_value = 1配置解析:
[bumpversion] 部分:
[bumpversion:part:dev] 部分:
[bumpversion:part:build] 部分:
当 current_version 为 1.5.3 时:
重要提示: bumpversion 的版本递增通常是非循环的。这意味着一旦 dev 部分从 "" 变为 dev,你无法通过 bumpversion dev 命令再将其变回 ""。要回到标准版本,你需要手动编辑 current_version 或使用其他 bumpversion 命令(如 bumpversion patch 等),这些命令在序列化时会选择不包含 dev 和 build 的格式。
假设 bumpversion.cfg 按照上述配置:
初始状态: current_version = 1.5.3
在开发版本上递增构建号: current_version = 1.5.3-dev-1
在开发版本上递增补丁号(会重置 dev 和 build): current_version = 1.5.3-dev-2
再次进入开发版本: current_version = 1.5.4
通过上述配置和理解,您可以灵活地使用 Bumpversion 管理带有可选开发版本后缀的项目版本,从而更好地适应不同的发布和开发流程。
以上就是Bumpversion 高级技巧:实现可选的开发版本后缀的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号