如何从Python远程获取Subversion历史/日志?
我想找到一个分支的第一个提交者,但不想一个个切换到所有分支去查看。通过命令行,这个操作非常简单:
svn log -v --stop-on-copy http://subversion.repository.com/svn/repositoryname
现在我想在一个Python脚本中实现这个功能,有没有什么好的方法?我查过Python的Subversion绑定,但我还是不太明白怎么做,尽管看起来是可以实现的。
任何帮助都会很感激。
2 个回答
0
另一个选择是直接在Python中使用命令行调用,方法是用到OS这个包。
import os
//cmd = 'ls -l /usr/bin'
cmd = ('svn log -v --stop-on-copy http://subversion.repository.com/svn/repositoryname')
os.system(cmd)
需要注意的是,这样做只是发出调用,如果你想要获取实际的信息,就需要使用同一个OS包里的Popen。
5
你可以直接使用Python的 subprocess
模块:
from subprocess import Popen, PIPE
p = Popen('svn log -v --stop-on-copy http://subversion.repository.com/svn/repositoryname',
stdout=PIPE)
stdout, stderr = p.communicate()
这样你就可以运行任何你想要的SVN命令了:只需要查看 stdout
(还有可能需要查看 stderr
)来获取命令的结果。然后你可以使用正则表达式来解析获取到的数据:
>>> s = Popen('svn log', shell=True, stdout=PIPE).communicate()[0]
>>> m = re.search('\r\nr(?P<rev>\d+)\s+\|\s+(?P<author>\w+)\s+\|\s+(?P<timestamp>.*?)\s|', s)
{'timestamp': '2011-10-10 10:45:01 +0000 (wed, okt 10 2011)',
'rev': '1234',
'author': 'someuser'
}