增加软件版本
项目描述
tbump:增加软件版本
tbump可以帮助您轻松地增加项目的版本。
注意
该项目最初托管在TankerHQ组织,该组织是我2016年至2021年的雇主。他们友好地同意将此项目的所有权归还给我。谢谢!
安装
安装tbump的推荐方式是使用pipx
确保已安装Python 3.7或更高版本。
安装pipx
运行pipx install tbump。
tbump也适用于pypi,并且如果您知道自己在做什么,可以使用pip进行安装。
屏幕截图
以下是tbump典型用法的示例
$ tbump 5.0.5
:: Bumping from 5.0.4 to 5.0.5
=> Would patch these files
- setup.py:14 version="5.0.4",
+ setup.py:14 version="5.0.5",
- tbump.toml:2 current = "5.0.4"
+ tbump.toml:2 current = "5.0.5"
=> Would run these hooks before commit
* (1/2) $ ./test.sh
* (2/2) $ grep -q -F 5.0.5 Changelog.rst
=> Would run these git commands
* git add --update
* git commit --message Bump to 5.0.5
* git tag --annotate --message v5.0.5 v5.0.5
* git push origin master
* git push origin v5.0.5
=> Would run these hooks after push
* (1/1) $ ./publish.sh
:: Looking good? (y/N)
y
=> Patching files
...
=> Running hooks before commit
...
=> Making bump commit and push matching tags
...
=> Running hooks after push
...
Done ✓
用法
首先,运行 tbump init <当前版本>,其中 当前版本 是您程序的当前版本。这将创建一个类似下面的 tbump.toml 文件
[version]
current = "1.2.41"
regex = '''
(?P<major>\d+)
\.
(?P<minor>\d+)
\.
(?P<patch>\d+)
'''
[git]
message_template = "Bump to {new_version}"
tag_template = "v{new_version}"
[[file]]
src = "setup.py"
然后运行
$ tbump 1.2.42
tbump 将
将配置中列出的每个文件中的字符串 1.2.41 替换为 1.2.42
基于 message_template 创建提交。
基于 tag_template 创建 注解 标签。
推送当前分支和标签。
请注意,默认情况下,tbump 将显示所有更改,并在执行任何操作之前停止以询问是否正确,允许您在出现问题时中止并重新尝试增量。您可以使用 --non-interactive 来禁用此行为。
如果您只想更新文件而不执行任何 git 操作或运行钩子命令,请使用 --only-patch 选项。
可以使用以下命令找到项目的当前版本
$ tbump current-version
高级配置
命令行选项
见
tbump --help
限制被替换的行
有时您想确保只有匹配给定模式的行被替换。例如,使用以下 package.json
/* in package.json */
{
"name": "foo",
"version": "0.42",
"dependencies": {
"some-dep": "0.42",
"other-dep": "1.3",
}
}
您将确保在从 0.42 增量到 0.43 时,包含 some-dep 的行不更改。
在这种情况下,您可以在 file 部分中设置一个 search 选项
# In tbump.toml
[[file]]
src = "package.json"
search = '"version": "{current_version}"'
请注意,搜索字符串实际上是一个完整的正则表达式,除了 {current_version} 标记被替换为纯文本外。
使用自定义版本模板
如果您使用类似于 1.2.3-alpha-4 的版本模式,您可能希望公开一个只包含版本字符串“公共”部分的变量。(在这种情况下为 1.2.3)。
为此,在 file 部分中添加一个 version_template 选项。格式字符串中使用的名称应与正则表达式中的组名称匹配。
/* in version.js */
export FULL_VERSION = '1.2.3-alpha-4';
export PUBLIC_VERSION = '1.2.3';
[[file]]
src = "version.js"
version_template = "{major}.{minor}.{patch}"
search = "export PUBLIC_VERSION = '{current_version}'"
[[file]]
src = "version.js"
search = "export FULL_VERSION = '{current_version}'"
在提交前运行命令
您可以在文件更改后、提交和推送之前运行一系列钩子。
如果某些受版本控制的文件是通过外部程序生成的,这将非常有用。
以下是一个示例
[[before_commit]]
name = "Check Changelog"
cmd = "grep -q -F {new_version} Changelog.rst"
名称是必填项。在将{new_version}占位符替换为新版本后,命令将通过shell执行。
任何失败的钩子都会中断版本升级。您可能需要在文件中撤销更改后再次尝试运行前,先运行git reset --hard。
推送后运行命令
您可以使用一个[[after_push]]部分来指定在标签推送后立即运行的钩子列表。
如果您需要在没有未提交更改的干净仓库上运行命令,这非常有用,例如发布rust包。
[[after_push]]
name = "Publish to crates.io"
cmd = "cargo publish"
设置版本字段默认值
(自6.6.0版新增)
如果您有一个包含不总是有匹配项的字段(例如预发布信息)的version_template,您可以设置一个默认值来替代None,这会引发错误。
例如
[version]
current = "1.2.3"
regex = """
(?P<major>\d+)
\.
(?P<minor>\d+)
\.
(?P<patch>\d+)
(\-
(?P<extra>.+)
)?
"""
[[file]]
src = "version.py"
version_template = '({major}, {minor}, {patch}, "{extra}")'
search = "version_info = {current_version}"
[[field]]
# the name of the field
name = "extra"
# the default value to use, if there is no match
default = ""
与不支持–atomic的git提供者协同工作
如果推送目标不支持--atomic,请在[git]部分配置文件中添加atomic_push=false。
..code-block:: ini
[git] atomic_push = false
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
tbump-6.11.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 385e710eedf0a8a6ff959cf1e9f3cfd17c873617132fc0ec5f629af0c355c870 |
|
MD5 | 513a6583a652a5f3a2da2108047cb085 |
|
BLAKE2b-256 | ab1fd02379532311192521a20b3597dc0f01bd37596e950a6cb40795ae9acb94 |