对于我的包裹,我有以下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
.
我做了一些阅读pbr
,发现它使用 git 提交和标签来创建它的版本控制。
在他们的文件中,它指出
可以通过两种方式管理版本 - postversioning 和 preversioning。Postversioning 是默认设置,通过在 setup.cfg 元数据部分中设置 version 来启用 preversioning。在这两种情况下,版本字符串都是从 git 推断出来的。
如果标记了当前签出的修订,则使用该标记作为版本。
如果当前签出的修订没有标记,那么我们取最后一个标记的版本号并增加它以获得最小目标版本。
然后我们将 git history 带回到上一个版本。在每次提交中,我们都会查找 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
文件中指定它?