我的 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。
参见setuptools-scm的文档默认版本控制方案: 您获得的版本遵循以下格式:
{next_version}.dev{距离}+{scm 字母}{修订哈希}.dYYYYMMDD
您应该隐藏未提交的更改,并最终检查标签(如果有任何距离)(在标签之后提交的更改)。 在您的情况下,您不需要显式签出标签,因为距离为 0,因此标签后没有任何提交的更改。
git stash
git checkout v0.1.9
python -m setuptools_scm