Yoa*_*ein 12 python pip python-packaging
我不太明白如何使用setuptools-scm。
据我了解,这个工具应该根据 SCM(在我的例子中是 git)历史记录得出版本号。它基本上使用距最新标签的距离来获取此信息。
现在,假设我有一个项目,我们在其中工作:我们有main和develop分支。我们使用 SemVer,因此我们有一个x.y.z版本模式。现在,每当我们提交时develop,我们都希望在我们的包注册表中拥有最新的包。因此,如果主分支上的最新版本是1.2.3例如,我们希望获得1.2.3.dev1、1.2.3.dev2等。
我实际看到发生的情况是,如果我有1.2.3最新的标签,setuptools-scm 会将下一个版本定义为1.2.4,另外,它会在版本中添加+g532hj..,而注册表等注册表PyPI Test不接受该版本。
有人能具体解释一下它是如何使用的吗?
Ter*_*eus 10
是的,这种行为setuptools-scm令人惊讶且难以理解,虽然文档没有(在我看来)适当强调它,但它就在那里记录下来。
问题是,如果您处于标记提交中setuptools-scm,则获取当前版本,而当您不在标记提交中时(大多数时候),它会非常努力地“猜测”下一个版本,将其分为两部分:“版本”和“本地”部分,格式为,两者都可以配置。{version}+{local}
该{version}部分由指令控制version_scheme,默认情况下:
自动猜测下一个开发版本(默认)。通过增加预发布段(如果存在)来猜测即将发布的版本,否则通过增加微段来猜测即将发布的版本。然后附加.devN。如果标签以 .dev0 结尾,则版本不会更改,并且自定义 .devN 版本将触发错误。
该{local}部分由指令控制local_scheme,默认情况下:
在开发版本上添加节点,在脏工作目录上添加日期(默认)
不幸的是,没有一个值version_scheme能够完全满足您的需求(添加一个普通的.devX),但您可以使用其中之一:
post-release生成发布后版本(添加 .postN)
no-guess-dev不猜测下一个版本,只是添加 .post1.devN
关于该{local}部分,您可以使用local_schemevalue完全禁用它no-local-version。
省略本地版本,有用,例如因为 pypi 不支持它
希望这可以帮助。
编辑:抱歉,我的第一篇文章非常不完整,因为我local_scheme一开始完全错过了这一部分。
| 归档时间: |
|
| 查看次数: |
4822 次 |
| 最近记录: |