文章详情页 您现在的位置是:网站首页>文章详情
bumpversion管理软件版本号
Jeyrce.Lu 发表于:2020年3月20日 22:41 分类:【Python】 3476次阅读
bumpversion是一个用python开发的“版本号”管理工具,你看的没错不同于git、svn版本控制,bumpversion仅仅是用来更新项目版本号的。
为什么要用版本号管理工具
(python3) jeeyshe@jeeyshe-PC:~/Code/python/xshop$ tree . ├── bin ├── README.md ├── src │ ├── app-one │ │ ├── handlers.py │ │ └── __init__.py │ ├── app-two │ │ ├── handlers.py │ │ └── __init__.py │ └── __init__.py └── VERSION
如上图所示的一个项目结构,假如我们在VERSION文件中写入了当前软件版本0.1.0,现在我们开发完了项目测试通过准备发布,我们就需要将VERSION中的版本号更新到新的版本0.1.1或者0.2.0,如果只是这样,那么手动改掉VERSION文件中的版本号就可以了。
现在我们把逻辑变得稍微复杂一下,我们在VERSION、README.md、以及src/app*下面的__init__.py文件中都写入了版本号,现在从0.1.0更新到0.1.1,那我们得一个一个改,这样一来如果再进行手动的更改一个一个文件打开,然后再去改掉版本号,这样就显得很麻烦了,因此我们需要一种批量修改的方法。bumpversion就是这样一种用python开发的批量更新版本号的工具。
怎么使用bumpversion
pip install bumpversion
在项目根目录下添加一个.bumpversion.cfg文件,其他地方也可以但是执行命令的时候需要手动指定文件位置,新增文件后项目路径如下:
. ├── bin │ └── .gitkeep ├── .bumpversion.cfg ├── README.md ├── src │ ├── app-one │ │ ├── handlers.py │ │ └── __init__.py │ ├── app-two │ │ ├── handlers.py │ │ └── __init__.py │ └── __init__.py └── VERSION
一份典型的.bumversion.cfg内容长这样:
[bumpversion] current_version = 0.1.0 commit = False tag = True tag_name = 'v{new_version}' message = 'Bump version: {current_version} → {new_version}' parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+) serialize = {major}.{minor}.{patch} {major}.{minor} [bumpversion:file:VERSION] search = {current_version} replace = {new_version} [bumpversion:file:README.md] search = VERSION: {current_version} replace = {new_version} [bumpversion:file:src/__init__.py] search = __version__ == {current_version} replace = {new_version} [bumpversion:file:src/app-one/__init__.py] search = __version__ == {current_version} replace = {new_version} [bumpversion:file:src/app-two/__init__.py] search = __version__ == {current_version} replace = {new_version}
使用例子
bumpversion patch 0.1.0 -> 0.1.1 bumpversion major 0.1.1 -> 1.0.0 bumpversion minor 1.0.0 -> 1.1.0
配置解释:
[bumpversion] current_version = 0.1.0 ; 当前版本信息 commit = False ; 是否需要git提交 tag = True ; git添加tag tag_name = 'v{new_version}' ; 当添加tag时的字符 message = 'Bump version: {current_version} → {new_version}' ; git 提交的commit日志 parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+) ; 项目文件中版本号匹配规则(正则) serialize = {major}.{minor}.{patch} ; 序列化后的版本号 {major}.{minor} [bumpversion:file:VERSION] ; 表示在.bumpversion.cfg同目录下VERSION查找当前版本号修改为新版本号 search = {current_version} replace = {new_version}
在某些版本中,我们还会加入一些标签来提示版本运行环境,例如在开发环境运行的1.0.0.alpha版本,测试环境运行1.0.0.beta版本、在线上环境运行1.0.0.gamma版本,则我们也可以增加标签版本号
[bumpversion] current_version = 1.alpha parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.(?P<release>.*) serialize = {major}.{minor}.{patch}.{release} {major}.{minor}.{patch} [bumpversion:part:release] optional_value = gamma values = alpha beta gamma
以此类推,当一个项目足够庞大时,要修改的文件数量可能是数十上百个,不可能一个一个文件手动修改版本号,总得有批量修改的方法,不局限于bumpversion工具,也可以自己写脚本来修改。这个标签版本不太好用,我用了几次老是修改错误了,得到的新版本不是我想要的版本,慎用。
版权声明 本文属于本站 原创作品,文章版权归本站及作者所有,请尊重作者的创作成果,转载、引用自觉附上本文永久地址: http://blog.lujianxin.com/x/art/duldrxo5o2ng
上一篇:Win10企业版LTSC激活
猜你喜欢
文章评论区
作者名片
- 作者昵称:Jeyrce.Lu
- 原创文章:61篇
- 转载文章:3篇
- 加入本站:2046天
作者其他文章
站长推荐
友情链接
站点信息
- 运行天数:2047天
- 累计访问:164169人次
- 今日访问:0人次
- 原创文章:69篇
- 转载文章:4篇
- 微信公众号:第一时间获取更新信息