【发布时间】:2019-06-14 06:38:35
【问题描述】:
对于我的包裹,我有以下setup.py
import setuptools
setuptools.setup(
setup_requires=['pbr>=2.0.0'],
pbr=True
)
当我运行python setup.py sdist 时,被标记到tar 文件的版本是module-0.0.1.dev1207。如果我将setup.cfg 修改为具有以下条目
[metadata]
version = 1.0.1
标记到 tar 文件的版本是 -1.0.1.dev1207。
我对@987654329@ 做了一些阅读,发现它使用 git 提交和标签来创建版本控制。
在他们的documentation 上,它声明
可以通过两种方式管理版本 - postversioning 和 preversioning。 Postversioning 是默认设置,通过在 setup.cfg 元数据部分中设置 version 来启用 preversioning。在这两种情况下,版本字符串都是从 git 推断出来的。
如果标记了当前签出的修订,则使用该标记作为版本。
如果当前签出的修订没有标记,那么我们取最后一个标记的版本号并增加它以获得最小目标版本。
然后我们将 git 历史记录返回到上一个版本。在每次提交中,我们都会查找 Sem-Ver: 伪标头,如果找到,则对其进行解析以查找关键字。未知符号不是错误(因此人们不能楔入 pbr 或破坏他们的树),但我们会发出信息级别的警告消息。已知符号:功能、api-break、弃用、错误修复。缺少的 Sem-Ver 行等同于 Sem-Ver:错误修复。错误修正符号会导致版本的补丁级别增加。功能和弃用符号会导致次要版本增加。 api-break 符号会导致主要版本增加。
如果正在使用 postversioning,我们使用生成的版本号作为目标版本。
如果正在使用 preversioning,我们会检查 setup.cfg 元数据部分中设置的版本是否大于我们使用上述方法推断的版本。如果推断的版本大于 preversioning 值,我们会引发错误,否则我们使用 setup.cfg 中的版本作为目标。
然后,我们根据自上次发布以来的提交生成开发版本字符串,并包含当前的 git sha 以消除自发布以来具有相同提交数量的多个开发版本。
但这让我不确定以下问题:
- 如何启用预版本?
- 如果 pbr 似乎说至少有一个标签是 pbr 正常工作所必需的,那么如果在 repo 中没有标签或标签怎么办?
- 如何删除我的版本中的
dev1207部分? - 如何设置
setup.cfg以从我的main.py读取版本,而不必在setup.cfg文件中指定它?
【问题讨论】:
标签: python python-pbr