阅读文档和设置工具 SCM 版本错误



我有一个软件包,我刚刚更新了setuptools_scm,发现 readthedocs 中的版本号是错误的。

http://sshuttle.readthedocs.org/en/v0.77/显示:

Version: 0.78.dev0+ng083293e.d20160304

但是,由于版本 083293e 具有 0.77 标记,因此版本字符串应仅为 0.77

看起来 readthedocs 可能会在构建之前对我的源代码进行更改。

我查看了 readthedocs 构建日志,它似乎在一个阶段(0.77)有正确的版本,但这是在构建文档之前。

Processing dependencies for sshuttle==0.77
Finished processing dependencies for sshuttle==0.77

构建文档时,构建日志不会提及版本。

有可能解决这个问题吗?

谢谢

我看到你正在构建这个项目。

显然,在确定版本之前,某些东西正在改变存储库状态。您可以通过在自己构建文档之前更改其中一个文件来复制类似的行为:

(sshuttle) $ python setup.py --version
0.77
(sshuttle) $ cat >> setup.py
# a comment
(sshuttle) $ python setup.py --version
0.78.dev0+ng083293e.d20160403

在阅读文档文档中,有该过程的说明。

在那里,您可以看到RTD所做的步骤,即(a)运行 setup.py 安装,然后(b)在需求.txt中安装需求。

我已经确认这两个步骤都不应该改变存储库状态。

然而,它没有解释的是这个"版本"来自哪里,或者update_imported_docs做了什么。我怀疑问题在于阅读文档正在修改存储库的微妙之处。

这是修改 conf.py 文件的一个地方。

也许将docs/conf.py添加到您的 .gitignore 将允许忽略这些更改,从而在计算项目版本时不会弄脏您的工作状态。

https://github.com/pypa/setuptools_scm/issues/84 已更新以记录此内容

我们将与狮身人面像团队合作,提供此过程的自动化/无痛版本

setuptools_scm的文档现在有关于如何使用 readthedocs 的说明:

不鼓励使用狮身人面像本身的setuptools_scm,而是 在可编辑/实际安装后使用pkg_resources:

from pkg_resources import get_distribution
release = get_distribution('myproject').version
# for example take major/minor
version = '.'.join(release.split('.')[:2])

根本原因是, 像 readthedocs 这样的服务有时会更改 WorkingDirectory 充分的理由和使用已安装的元数据可以防止使用不必要的 那里的不稳定数据。

这避免了根据其他答案使用kluges的需要。

最新更新