首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自动获取程序中的SVN修订号

自动获取程序中的SVN修订号
EN

Stack Overflow用户
提问于 2009-09-20 08:33:45
回答 11查看 30.8K关注 0票数 19

我在SVN下有一个python项目,我想在它运行时显示版本号。有什么方法可以做到这一点(比如在提交时自动运行一个简短的脚本来更新版本文件,或者在Python中查询SVN存储库?)

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 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中我会这样做:

代码语言:javascript
复制
$revString = '$Revision: 144$';
if(preg_match('/: ([0-9]+)\$/', $revString, $matches) {
    echo 'Revision is ' . $matches[1];
}
票数 29
EN

Stack Overflow用户

发布于 2009-11-28 18:06:25

与类似,但比PHP答案更具pythonic风格;将此代码放入模块的__init__.py

代码语言:javascript
复制
__version__ = filter(str.isdigit, "$Revision: 13 $")

并确保添加了Revision属性:

代码语言:javascript
复制
svn propset svn:keywords Revision __init__.py
票数 15
EN

Stack Overflow用户

发布于 2014-08-28 13:22:27

或者你可以这样做:

代码语言:javascript
复制
import re,subprocess

svn_info = subprocess.check_output("svn info")

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

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

或者像这样:

代码语言:javascript
复制
print (subprocess.check_output("svnversion")).split(":")[0]

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1449935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档