将SVN版本号自动输入程序

2024-03-29 07:46:32 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

与PHP答案类似,但比PHP答案稍微有点像python;将其放入模块的__init__.py

__version__ = filter(str.isdigit, "$Revision: 13 $")

并确保添加修订属性:

svn propset svn:keywords Revision __init__.py

我不确定Python的细节,但是如果将字符串$Revision$放在文件的某个地方,并且在SVN配置中启用了auto props=true,那么它将被重写为$Revision:144$。然后你可以在脚本中解析这个。

a number of property keywords you can use in this way

这不会有任何开销,例如查询SVN repo,因为字符串在提交或更新时硬编码到您的文件中。

我不确定您将如何在Python中解析它,但在PHP中我将:

$revString = '$Revision: 144$';
if(preg_match('/: ([0-9]+)\$/', $revString, $matches) {
    echo 'Revision is ' . $matches[1];
}

或者你可以这样做:

import re,subprocess

svn_info = subprocess.check_output("svn info")

print (re.search(ur"Revision:\s\d+", svn_info)).group()

它在我的项目中打印"Revision: 2874"

或者像这样:

print (subprocess.check_output("svnversion")).split(":")[0]

它在我的项目中打印"2874"

相关问题 更多 >