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



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

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

我需要从python脚本做到这一点,任何想法我怎么能做到这一点?我检查了python subversion绑定,但我不明白如何做到这一点,即使它似乎可以做到。

你可以直接使用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)以获得命令的结果。然后可以使用例如regex来解析检索到的数据:

>>> s = Popen('svn log', shell=True, stdout=PIPE).communicate()[0]
>>> m = re.search('rnr(?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'
}

另一个选择是使用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所需的信息,那么这将只是进行调用。

最新更新