【问题标题】:setuptools-scm: current version instead of next versionsetuptools-scm:当前版本而不是下一个版本
【发布时间】:2019-11-14 22:59:04
【问题描述】:

我想使用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。如何处理?

【问题讨论】:

    标签: python git version-control setuptools setuptools-scm


    【解决方案1】:

    现在 setuptools-scm 提供了使用发布后方案的选项,请参阅setuptools_scm.version_scheme section。然后python setup.py --versiongit describe --tag 将为您提供相同的信息(尽管格式不同)。要切换到发布后方案,请在 setup.py 中包含以下行:

    setup(...
          use_scm_version={'version_scheme': 'post-release'},
          ...
          )
          
          
    

    【讨论】:

    • 只是想发表评论说这对我有帮助!
    【解决方案2】:

    setuptools_scm 工作正常,因为它正在创建下一个版本的预发布。根据PEP440 section on pre-releases

    预发布段由预发布阶段的字母标识符和一个非负整数值组成。给定版本的预发布首先按阶段(alpha、beta、候选版本)排序,然后按该阶段内的数字组件排序。

    他们还将示例显示为:

    X.YaN   # Alpha release
    X.YbN   # Beta release
    X.YrcN  # Release Candidate
    X.Y     # Final release
    

    这意味着0.3.dev1+gb13420a0.3 的预发布版本,位于0.2 之后。 0.2.dev1+gb13420a 表示它是 0.2 的预发布版本,并且比 0.2 更早。

    【讨论】:

    • 感谢您的回答。但是我不想对我的软件使用预发布策略,所以我转向了简单的自定义脚本bump-version.sh,它做同样的事情。如果以后setup_scm版本策略可以轻松定制就好了。
    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多