使用 pyproject.toml 构建会生成一个似乎与 git 标签不匹配的动态版本

问题描述 投票:0回答:1

我的 pyproject.toml 文件包含:

[project]
name = "projecta"
dynamic = ["version"]

[build-system]
requires = ["setuptools >= 61.0",
            "setuptools-scm >= 8.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools_scm]
version_file = "projecta/_version.py"

Python 3.10.12

setuptools-scm==8.0.4

pip-工具==7.3.0

git 版本 2.34.1

$ git 描述 v0.1.9

$ git 描述 --tags v0.1.9

从“python -m build”创建的内容是:

projecta-0.1.10.dev0+gf3c0ecd.d20240214-py3-none-any.whl

版本是如何确定的?生成的补丁与最新标签中的内容不匹配。

我尝试添加新标签: git tag -a 。没有任何东西会产生与最新标签匹配的构建。我尝试通过 git 输出查找与生成的版本匹配的版本,但没有找到任何匹配的内容。我提交了所有更改,然后添加了新标签。在所有构建版本上仍然获得比指定版本更新的版本以及 devx。

version pyproject.toml pip-tools setuptools-scm
1个回答
0
投票

参见setuptools-scm的文档默认版本控制方案: 您获得的版本遵循以下格式:

{next_version}.dev{距离}+{scm 字母}{修订哈希}.dYYYYMMDD

您应该隐藏未提交的更改,并最终检查标签(如果有任何距离)(在标签之后提交的更改)。 在您的情况下,您不需要显式签出标签,因为距离为 0,因此标签后没有任何提交的更改。

git stash
git checkout v0.1.9
python -m setuptools_scm
© www.soinside.com 2019 - 2024. All rights reserved.