只需一个命令就可以升级你的软件!
bump2version的Python项目详细描述
bump2版本
注
这是一个优秀项目的过渡分支,可以在这里找到:https://github.com/peritus/bumpversion
不幸的是,开发似乎已经停滞了一段时间,从 作者,为此,本项目是一个替换项,它合并了一些更重要的修复程序。
希望我们可以合并回原来的bumpversion并在那里进行开发。
概述
只需一个命令就可以升级你的软件!
一个小型的命令行工具,通过更新所有 以正确的增量对源代码中的字符串进行版本转换。也创造 提交和标记:
- 版本格式是高度可配置的
- 在没有任何VCS的情况下工作,但很高兴从中读取标签信息并写入 提交并标记到Git和Mercurial(如果可用)
- 只处理文本文件,因此它不特定于任何编程语言
- 支持python2、python3和pypy
安装
您可以从python包索引(pypi)下载并安装此软件的最新版本,如下所示:
pip install --upgrade bump2version
用法
有两种操作模式:在命令行上执行单个文件操作
使用配置文件(bumpversion.cfg
)进行更复杂的多文件操作。
bump2version [options] part [file]
部件
必需的
要增加的版本部分,例如minor
有效值包括--serialize
/--parse
选项中给定的值。
碰撞0.5.1到0.6.0的示例:
bump2version --current-version 0.5.1 minor src/VERSION
文件
[可选]
默认值:无
将被修改的文件。
如果没有给出,则来自 将使用配置文件。如果在 配置文件也不会被修改。
颠簸1.1.9至2.0.0的示例:
bump2version --current-version 1.1.9 major setup.py
配置文件
所有选项都可以在一个名为
.bumpversion.cfg
这样一旦你知道bump2version需要如何
为一个特定的软件包配置,您可以在没有
稍后指定选项。你应该加上那个文件o VCS,这样其他人也可以
凹凸版本。
命令行上的选项优先于配置文件中的选项, 它们优先于从环境中获得的,然后从 默认设置。
示例.bumpversion.cfg
:
[bumpversion]
current_version = 0.2.9
commit = True
tag = True
[bumpversion:file:setup.py]
如果不存在.bumpversion.cfg
,则bump2version
也将研究
setup.cfg
用于配置。
配置文件--全局配置
一般配置分为[bumpversion]
部分。
当前版本
必需的
默认值:无
碰撞前软件包的当前版本。
也可用作--当前版本
(例如bump2version--当前版本0.5.1 patch setup.py
)
新版本
[可选]
默认值:无
增量后软件包的版本。如果不给的话 自动确定。
也可用作--新版本
(例如从0.5.1直接转到0.6.1
:bump2version--当前版本0.5.1--新版本0.6.1 patch setup.py
)。
标记=(true false)
[可选]
默认值:false(不创建标记)
是否创建标记,即新版本,以字符为前缀
"v
"。如果您使用的是git,不要忘记使用
--标记
标志。
在命令行中也可用作(-tag--no tag)
签名标记=(true false)
[可选]
默认值:false(不签署标记)
是否签署标签。
在命令行中也可用作(-sign tags--no sign tags)
标记名=
[可选]
默认值:v{new_version}
将创建的标记的名称。仅当使用 这是使用python格式字符串语法的模板。
模板上下文中提供了 也可用作命令行标志 [可选] 是使用git还是mercurial创建提交。 也可用作 在许多项目中,在
提交并在失败的情况下中止提交。对于某些用例,它可能
希望在碰撞版本并具有 [可选]< BR>默认值: 创建提交时要使用的提交消息。仅在使用 这是使用python格式字符串语法的模板。
模板上下文中提供了 也可用作命令行标志 版本字符串由一个或多个部分组成,例如版本 默认情况下,所有被视为数字的部分,即其初始值为 对于高级版本控制方案,可能需要非数字部分(例如
确定α或β版本
指示开发阶段、软件包的风格或
发布名称)。为此,您可以使用 以下选项在零件配置中有效: 默认值:数字(即 当碰到指定的
部分, 示例: 默认值:值--tag
/tag=true时有效
中的第一个条目当前版本
和新版本
以及当前部件和
新部件(例如,'
当前主要部件
或"
新的修补程序"。
此外,所有的环境变量都是公开的,前缀是
$
您还可以使用变量now
或utcnow
来获取当前时间戳。双方接受
日期时间格式(如在{now:d.%m.%y}
中使用时)。标记名
。示例用法:bump2version--标记"release-{new_version}"修补程序
提交=(true false)
默认值:false(不创建提交)(-commit--no commit)
commit=true
时,
预提交钩子应该执行与常规钩子稍有不同的操作
提交。例如,只对
软件。允许预提交挂钩区分bumpversion
提交,bumpversion\u当前版本
和bumpversion\u新版本
执行commit命令时设置环境变量。消息=
通气版本:{当前版本}→{新版本}
--commit时有效
/commit=true
当前版本
和新版本
以及当前部件和
新部件(例如,'
当前主要部件
或"
新的修补程序"。
此外,所有环境变量都将公开,前缀为
$
您还可以使用变量now
或utcnow
来获取当前时间戳。双方接受
日期时间格式(如在{now:d.%m.%y}
中使用时)。--message
。示例用法:bump2version--message'[{now:%y-%m-%d}]jenkins build{$build}:{new_version}'补丁
)配置文件—部件特定配置
1.0.2
有三个部分,由点()字符分隔。默认情况下
配置这些部件命名为
major
,minor
,patch
,但是您可以
使用parse
/serialize
选项进行自定义。0
它们以整数的形式增加。此外,值0
被认为是
如果序列化不需要,也就是说版本1.4.0
是可选的
等于1.4
如果{major}.{minor}
作为序列化
值给定。[bumpversion:part:…]
部分
包含零件名称(例如,在
名为[bumpversion:part:release\u name]
的部分
值=
0
,1
,2
,…)[bumpversion:part:release_name]
values =
witty-warthog
ridiculous-rat
marvelous-mantis
可选值
如果零件的值与此值匹配,则认为它是可选的,即。
它的表示形式是--不需要序列化的可能性。
示例:
[bumpversion]
current_version = 1.alpha
parse = (?P<num>\d+)\.(?P<release>.*)
serialize =
{num}.{release}
{num}
[bumpversion:part:release]
optional_value = gamma
values =
alpha
beta
gamma
在这里,bump2version发行版
将把1.alpha
提升到1.beta
。执行
bump2version发布版再次将bump
1.beta
提升到1
,因为
release
beinggamma
配置为可选。
第一个值=
默认值:值中的第一个条目
当零件复位时,该值将被设置为此处指定的值。
配置文件—特定于文件的配置
此配置位于以下部分:[bumpversion:file:…]
parse=
默认值:(?p<;主要>;\d+。(?p<;次要的>;\d+。(?p<;修补程序>;\d+
正则表达式(使用python正则表达式语法rel="nofollow">python正则表达式语法 如何查找和分析版本字符串。
要求Parse由serialize=
生成的所有字符串。命名匹配
组("(?p<;name>;…)
")将值提供给作为部分的参数。
也可用作--parse
序列化=
默认值:{major}.{minor}.{patch}
指定如何将版本部分序列化回版本的模板 字符串,
这是使用python格式字符串语法的模板。
模板上下文中提供了命名组的解析值
在parse=
以及所有环境变量(前缀为
$
)。
可以多次指定,bumpversion将尝试序列化 格式从第一个开始,然后选择最后一个,所有值都可以 表示如下:
serialize =
{major}.{minor}
{major}
在上面的示例中,新版本1.9
将被序列化为
1.9
,但版本2.0
将被序列化为2
也可用作--serialize
。命令行中的多个值是
给定如下:--serialize{major}.{minor}--serialize{major}
搜索=
默认值:{当前版本}
模板字符串如何在文件中搜索要替换的字符串。 如果当前版本号 可能在文件中多次出现,而您的意思是只碰撞其中一个 发生。可以是多行,使用python格式字符串语法进行模板化
替换=
默认值:{新版本}
用于创建将替换中当前版本号的字符串的模板 文件。
鉴于此,requirements.txt
:
Django>=1.5.6,<1.6
MyProject==1.5.6
使用这个.bumpversion.cfg
将确保只有包含
myproject
将被更改:
pip install --upgrade bump2version
0
可以是多行,使用python格式字符串语法进行模板化。
命令行选项
上面的大多数配置值也可以作为命令行上的选项提供。 此外,还提供以下选项:
--干运行,-n
别碰任何文件,假装就好。最好与--verbose一起使用
--允许脏
通常,如果工作目录脏到无法保护,bumpversion将中止
您将无法释放未版本化的文件和/或覆盖未保存的更改。
使用此选项覆盖此检查。
--详细
向stderr打印有用信息
--列表
将机器可读信息列表到stdout供其他人使用
程序。
输出示例:
pip install --upgrade bump2version
1
-h,--帮助
打印帮助并退出
在脚本中使用bumpversion
如果需要在脚本中使用bumpversion生成的版本,可以使用
--list
选项,结合grep
和sed
例如,假设您使用git流来管理项目,并希望自动
创建发布。当您发出git flow release start
时,您已经需要知道
新版本,在应用更改之前。
在bash脚本中获取它的标准方法是
pip install --upgrade bump2version
2
其中<;part>;是您要更新的版本号的一部分。您需要指定
--干运行
以避免bumpversion实际碰撞版本号。
例如,如果您正在更新次要版本号并查找新版本号,则会变为
pip install --upgrade bump2version
3
开发和贡献
另请参见我们的ibuting.md" rel="nofollow">贡献.md
在github上进行开发,补丁包括测试、文档 非常欢迎,以及错误报告!如果这件事 工具不支持在开发中碰撞版本的所有方面 工作流,因为它的用途非常广泛。
如何发布bumpversion本身
执行以下命令:
pip install --upgrade bump2version
4
许可证
bump2version是在mit许可下获得许可的-有关详细信息,请参见license.rst文件
更改
未发布v0.5.11
- 客房部,同时发布SDist
- 内务管理,修复Appveyor版本
- 客房服务,
制作皮棉
现在使用pylint制作皮棉 - 放弃对python3.4的支持,谢谢@hugovk 79
- 增强丢失VCS命令检测(错误13),感谢@lowell80 75
- 添加环境变量以供其他脚本使用,谢谢@mauvilsa 70
- refactor,cli.main现在可读性更强了,谢谢@florisla 68
- 修复,保留Windows的文件换行,谢谢@hesstobi 59
- 添加对Pythno3.7的支持(测试),谢谢@florisla 49
- 允许将任何部分配置为可配置的字符串,如tag_name等,谢谢@florisla 41
v0.5.10
- 客房部,使用麻绳
v0.5.9
- 修复了基于windows appveyor的测试,谢谢:@jeremycarroll 33和34
- 修复了在使用setup.cfg进行配置时正确插值的问题,谢谢:@sethmmorton 32
- 提高毒物/特拉维斯检测,谢谢:@ekohl 27
- 修复了setup.py中pypi.org文档的降价格式,谢谢:@florisla,@mattwmaster58 26
v0.5.8
- 更新自述文件以降低标记,以便于维护
- 修正了travis测试,谢谢:@sharksforams 15
- 添加了对换行的支持,谢谢:@sharksforarms 14
- 修复了Windows上的一个类型错误问题,谢谢:@lorengordon 12
- 标准化的python版本,谢谢:@ekohl 8
- Pypy,7的固定测试
v0.5.7版
- 添加了对签名标记的支持(git tag-s) 谢谢:@californian6
v0.5.6
- 通过使脚本安装为bumpversion,增加了与bumpversion的兼容性 谢谢:@the allanc2
v0.5.5
- 添加了对带注释标记的支持 谢谢:@ekohl@gvangool58
v0.5.4版
- 重命名为bump2version以确保与原始包不冲突
v0.5.3
v0.5.1
- 文档文件特定选项
search=
和replace=
(在0.5.0中引入) - 修正了从
serialize=
config解析单个标签的问题,即使存在 最后一个标签后的字符(感谢@mskrajnowski\56 - 解决方案:不要在git存储库中崩溃,这些存储库的标记包含连字符51和52
- 修正:记录配置文件的实际内容,而不是configparser打印的内容 读完后。
- 修正:支持
search=
中的多行值
- 也可以从
setup.cfg加载配置,谢谢@t-8ch\57
v0.5.0
这是一个主要功能,包含两个较大的功能,需要进行一些更改 以配置格式。此版本完全向后兼容 v0.4.1,但是不推荐在未来版本中删除的两种用途。
- 新功能:
部件特定配置
- 新功能:
文件特定配置
- 新特性:parse选项现在可以跨越多行(允许对complex进行注释 正则表达式。有关详细信息,请参阅python文档中的re.verbose,也可以参阅该测试用例作为示例。
- 新功能:
--allow dirty
- 修复:以二进制模式保存文件以避免换行(感谢@jaraco\45
- 许可证:bumpversion现在根据麻省理工学院的许可证获得许可。
- 不赞成在命令行中使用多个文件(请改用
配置文件
,或多次调用bumpversion
)- deprecate'files='配置(使用
文件特定配置
代替) - 新功能:
v0.4.1版
- 添加--列表选项
- 使用临时文件将提交/标记消息移交给git/hg
- 修正:不要在py3上将stdout编码为utf-8
- 修复:配置文件内容的日志记录错误
v0.4.0
- 添加--详细选项
- 允许选项--多次序列化
v0.3.8
- 修复:-parse/--serialize在cfg中不起作用
v0.3.7版
- 如果没有安装git或hg,不要失败(谢谢@keimlink)
- "文件"选项现在是可选的
- 修复与脏工作目录相关的错误
v0.3.6
- fix—标记默认值(感谢@keimlink)
v0.3.5
- 将{now}和{utcnow}添加到上下文
- 使用正确的文件编码写入配置文件。注意:如果您正在使用 python2并希望在配置文件中使用utf-8编码字符, 需要像使用"pip install-u configparser"一样更新configparser
- 即使可以从VCS标签(WAS 令人困惑)
- 使用中打印自己的版本号
- 允许碰撞包含非数字的零件
- 有关文件编码的各种修复方法
v0.3.4版
- 错误修复:标签名和消息在.bumpversion.cfg中不起作用/问题/9" rel="nofollow">9
v0.3.3
- add—标记名选项
- 现在可以在python 3.2、3.3和pypy上工作了
v0.3.2
- 错误修复:来自
git describe的只读标记
看起来像版本
v0.3.1版
- 错误修复:git workdir raining assertionerror中的
--help
- 错误修复:如果其中一个文件不存在,请提前失败
- 错误修复:
commit=true
/tag=true
in.bumpversion.cfg无效
v0.3.0
- 中断更改已删除
--bump
参数,这是第一个 位置参数。 如果以前使用过bumpversion--bump major
bumpversion major
现在。 如果以前使用不带参数的bumpversion 需要指定零件(以前的默认值是
修补程序
),如中所示bumpversion修补程序
)。
v0.2.2
- 添加--无提交,--无标记
v0.2.1
- 如果可用,请使用git了解当前版本
v0.2.0
- 灵活的支持
v0.1.1
- 只有在需要时才创建标记(感谢@gvangol)
v0.1.0
- 初始公共版本