如何从python远程轮询subversion历史/日志?

时间:2011-10-24 13:51:50

标签: python svn

我需要找到分支的第一个提交者,而不必检查所有分支。 从命令行很容易做到:

svn log -v --stop-on-copy http://subversion.repository.com/svn/repositoryname

我需要从python脚本中执行此操作,任何想法我该怎么做?我检查了python subversion绑定但我无法理解如何做到这一点,即使它似乎可以完成。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

你可以使用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'
}

答案 1 :(得分:0)

另一种选择是使用OS包在Python中使用命令行调用。

import os
//cmd = 'ls -l /usr/bin'
cmd = ('svn log -v --stop-on-copy http://subversion.repository.com/svn/repositoryname')

os.system(cmd)

请注意,如果您想要从同一个操作系统包中实际捕获使用Popen所需的信息,这只会进行调用。