我想使用setuptools-scm
来控制我的软件包版本。我的setup.py
:
setuptools.setup(
...
use_scm_version={'write_to': 'my-package/version.py'},
...
)
目前,我的仓库中有v0.2
标签。我创建了新分支并添加了一些提交。当我运行python setup.py --version
创建my-package/version.py
文件时,我得到下一个标记v0.3
而不是当前的v0.2
:
$ SETUPTOOLS_SCM_DEBUG=1 python3 setup.py --version
...
cmd 'git describe --dirty --tags --long --match *.*'
out b'v0.2-1-gb13420a\n'
cmd 'git rev-parse --abbrev-ref HEAD'
out b'feature-version-system\n'
tag v0.2
tag 'v0.2' parsed to {'version': 'v0.2', 'prefix': '', 'suffix': ''}
version pre parse v0.2
version <Version('0.2')>
version v0.2 -> 0.2
scm version <ScmVersion 0.2 d=1 n=gb13420a d=False b=feature-version-system>
config {'version_scheme': 'guess-next-dev', 'local_scheme': 'node-and-date'}
ep ('setuptools_scm.version_scheme', 'guess-next-dev')
ep found: guess-next-dev
ep ('setuptools_scm.local_scheme', 'node-and-date')
ep found: node-and-date
version 0.3.dev1
local_version +gb13420a
0.3.dev1+gb13420a # <- I want to see 0.2.dev1+gb13420a here
$ git tag
v0.1
v0.2
我认为这是错误的方式,因为我正在努力的更改是针对当前发行版标签v0.2
的,但是setuptools_scm
说它们属于v0.3
。如何处理?
答案 0 :(得分:0)
setuptools_scm
正常工作,因为它正在创建下一版本的预发行版。根据{{3}}:
预发布段由用于预发布阶段的字母标识符以及一个非负整数值组成。给定发行版的预发行版首先按阶段(alpha,beta,候选发行版)排序,然后按该阶段内的数字成分排序。
它们还将示例显示为:
X.YaN # Alpha release
X.YbN # Beta release
X.YrcN # Release Candidate
X.Y # Final release
这意味着0.3.dev1+gb13420a
是0.3
的预发行版本,并且紧随0.2
之后。 0.2.dev1+gb13420a
表示它是0.2
的预发布版本,并且比0.2
早。
答案 1 :(得分:0)
一段时间以来,setuptools-scm提供了使用后发布方案的选项,请参见setuptools_scm.version_scheme section。然后python setup.py --version
和git describe --tag
将为您提供相同的信息(尽管格式不同)。要切换到发布后方案,请在setup.py中添加以下行:
setup(...
use_scm_version={'version_scheme': 'post-release'},
...
)