我在SVN下有一个python项目,我想在它运行时显示版本号。有什么方法可以做到这一点(比如在提交时自动运行一个简短的脚本来更新版本文件,或者在Python中查询SVN存储库?)
发布于 2009-09-21 11:43:56
我不确定Python的具体细节,但是如果将字符串$Revision$放到文件中的某个位置,并且在SVN配置中启用-auto-props=true,它将被重写为类似于$Revision: 144$的内容。然后,您可以在脚本中对其进行解析。
这里有a number of property keywords you can use in this way。
这不会有任何开销,例如查询SVN代码库,因为字符串在提交或更新时被硬编码到文件中。
我不确定在Python中如何解析,但在PHP中我会这样做:
$revString = '$Revision: 144$';
if(preg_match('/: ([0-9]+)\$/', $revString, $matches) {
echo 'Revision is ' . $matches[1];
}
发布于 2009-11-28 18:06:25
与类似,但比PHP答案更具pythonic风格;将此代码放入模块的__init__.py
中
__version__ = filter(str.isdigit, "$Revision: 13 $")
并确保添加了Revision属性:
svn propset svn:keywords Revision __init__.py
发布于 2014-08-28 13:22:27
或者你可以这样做:
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"
https://stackoverflow.com/questions/1449935
复制相似问题