首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用setuptools_scm?

如何使用setuptools_scm?
EN

Stack Overflow用户
提问于 2022-09-05 07:03:02
回答 1查看 118关注 0票数 2

我不太懂如何使用setuptools-scm

据我所知,这个工具应该根据SCM (在我的例子中是git)历史来导出版本号。它基本上使用与最新标签的距离来获得这些信息。

现在,假设我有一个我们这样工作的项目:我们有一个maindevelop分支。我们使用SemVer,因此我们有一个x.y.z版本模式。现在,每当我们承诺使用develop时,我们都希望在包注册表中有一个最新的包。因此,如果主分支上的最新版本是1.2.3 (例如,我们希望得到1.2.3.dev11.2.3.dev2等)。

我实际看到的是,如果我使用1.2.3作为我的最新标记,setuptools-scm将下一个版本定义为1.2.4,另外,它还向版本中添加了一个+g532hj..,例如PyPI Test之类的注册表不接受该版本。

有人能确切解释一下它是怎么用的吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 15:25:44

是的,setuptools-scm的这种行为令人惊讶,也很难理解,虽然文档没有给它适当的强调(在我看来),但它被文档化了就在那儿

问题是,如果您处于有标记的提交中,setuptools-scm将获得当前版本,当您不是(大多数时候)时,它会非常努力地“猜测”下一个版本,将其分为两个部分,“版本”和“本地”部分,格式为{version}+{local},它们都是可以配置

{version}部件由version_scheme指令控制,默认情况下:

自动猜测下一个开发版本(默认)。如果存在,则通过增加预发布段来猜测即将发布的版本,否则则通过增加微段来猜测。然后追加.devN。如果标记以.dev0结尾,则版本不会发生碰撞,并且自定义.devN版本将触发错误。

{local}部件由local_scheme指令控制,默认情况下:

在dev版本上添加节点,在脏workdir上添加日期(默认)

不幸的是,没有一个version_scheme值可以完全满足您的需要(添加一个普通的.devX),但是您可以不使用其中的一个:

  • post-release

生成发布后版本(添加.postN)

  • no-guess-dev

不做下一个版本的猜测,只添加.post1.devN

关于{local}部件,您可以在local_scheme中完全禁用它,即值no-local-version

省略本地版本,例如,因为pypi不支持本地版本

希望这能有所帮助。

编辑:对不起,我的第一篇文章很不完整,因为我一开始完全错过了local_scheme部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73605607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档