只需一个命令就可以升级你的软件!

bump2version的Python项目详细描述


bump2版本

imageimageimage特拉维斯Appveyorhttps://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.1bump2version--当前版本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}

将创建的标记的名称。仅当使用--tag/tag=true时有效

这是使用python格式字符串语法的模板。 模板上下文中提供了当前版本新版本 以及当前部件和新部件(例如,'当前主要部件 或"新的修补程序"。 此外,所有的环境变量都是公开的,前缀是$
您还可以使用变量nowutcnow来获取当前时间戳。双方接受 日期时间格式(如在{now:d.%m.%y}中使用时)。

也可用作命令行标志标记名。示例用法:
bump2version--标记"release-{new_version}"修补程序

提交=(true false)

[可选]
默认值:false(不创建提交)

是使用git还是mercurial创建提交。

也可用作(-commit--no commit)

在许多项目中,在 提交并在失败的情况下中止提交。对于某些用例,它可能 希望在碰撞版本并具有commit=true时, 预提交钩子应该执行与常规钩子稍有不同的操作 提交。例如,只对 软件。允许预提交挂钩区分bumpversion 提交,bumpversion\u当前版本bumpversion\u新版本 执行commit命令时设置环境变量。

消息=

[可选]< BR>默认值:通气版本:{当前版本}→{新版本}

创建提交时要使用的提交消息。仅在使用--commit时有效/commit=true

这是使用python格式字符串语法的模板。 模板上下文中提供了当前版本新版本 以及当前部件和新部件(例如,'当前主要部件 或"新的修补程序"。 此外,所有环境变量都将公开,前缀为$
您还可以使用变量nowutcnow来获取当前时间戳。双方接受 日期时间格式(如在{now:d.%m.%y}中使用时)。

也可用作命令行标志--message。示例用法:
bump2version--message'[{now:%y-%m-%d}]jenkins build{$build}:{new_version}'补丁

配置文件—部件特定配置

版本字符串由一个或多个部分组成,例如版本1.0.2 有三个部分,由点()字符分隔。默认情况下 配置这些部件命名为majorminorpatch,但是您可以 使用parse/serialize选项进行自定义。

默认情况下,所有被视为数字的部分,即其初始值为0 它们以整数的形式增加。此外,值0被认为是 如果序列化不需要,也就是说版本1.4.0是可选的 等于1.4如果{major}.{minor}作为序列化值给定。

对于高级版本控制方案,可能需要非数字部分(例如 确定α或β版本 指示开发阶段、软件包的风格或 发布名称)。为此,您可以使用[bumpversion:part:…]部分 包含零件名称(例如,在 名为[bumpversion:part:release\u name]的部分

以下选项在零件配置中有效:

值=

默认值:数字(即012,…)

当碰到指定的 部分,

示例:

[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发布版再次将bump1.beta提升到1,因为 releasebeinggamma配置为可选。

第一个值=

默认值:值中的第一个条目

当零件复位时,该值将被设置为此处指定的值。

配置文件—特定于文件的配置

此配置位于以下部分:[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选项,结合grepsed

例如,假设您使用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

  • 修复当存在配置时未使用新版本值的错误 (感谢@cscetbon@ecordell60
  • 保留密钥配置文件大小写 (感谢库马尔75
  • Windows CRLF改进(感谢@thebjorn)

v0.5.1

  • 文档文件特定选项search=replace=(在0.5.0中引入)
  • 修正了从serialize=config解析单个标签的问题,即使存在 最后一个标签后的字符(感谢@mskrajnowski\56
  • 解决方案:不要在git存储库中崩溃,这些存储库的标记包含连字符5152
  • 修正:记录配置文件的实际内容,而不是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=truein.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

  • 初始公共版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
junit有没有办法在Java中重新初始化静态类?   在浏览器中点击应用程序时java Play框架挂起   文件Java错误中的NullPointerException   使用Java中的SNMP查找网络中计算机的登录名   java包装服务器引导程序已弃用,有什么替代方案?   当客户在等待理发时,java信号量值是否存在问题?   java如何使用JavaMail仅下载特定类型的附件   如何在java中将十进制转换为十六进制   java Slick2D粒子系统不会生成粒子   java检测更改事件来自何处   将Java集合类型参数类设置为数组   java如何从eclipse导出为可运行JAR文件?   java EntityManager对象未注入Glassfish和Spring   swing从actionPerformed和actionListener Java返回字符串   java在给定另一个等价键对象的情况下获取映射项的当前键   无论输入如何,java网络都会产生相同的输出