Setuptools:从父目录中查找 SVN 修订版

Setuptools: find SVN revision from a parent directory

在我整理的 Python 包中,我使用以下 setup.cfg 文件:

[egg_info]
tag_build = dev
tag_date = 1
tag_svn_revision = 1

然而,当我 运行 python setup.py sdist 时,SVN 修订显示为 -r0。这可能是因为我 运行 安装脚本没有 .svn 目录;事实上我的树是

 main_dir/
   .svn/
   branches/
   trunk/
     setup.py
     setup.cfg

如何让 setuptools 在父目录中查找 SVN 修订号?我仍然想继续使用我的包版本号码。

我目前的解决方案是合并 this answer 并像这样手动构建版本(减去 shell=True 选项):

# Hat tip: 
import subprocess

def svnversion():
    p = subprocess.Popen("svnversion", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    return stdout

_version = '{}-{}'.format(my_pkg_version, svnversion())

虽然 setup.cfg 文件包含:

[egg_info]
tag_build = dev
tag_date = 1

如果您愿意安装另一个软件包,您可以用不同的方式解决 -r0 问题。自版本 10 起,Setuptools 不支持 SVN 元数据。该功能已移至 setuptools_svn 包。