我需要找到分支的第一个提交者,而不必检查所有分支。 从命令行很容易做到:
svn log -v --stop-on-copy http://subversion.repository.com/svn/repositoryname
我需要从python脚本中执行此操作,任何想法我该怎么做?我检查了python subversion绑定但我无法理解如何做到这一点,即使它似乎可以完成。
任何帮助将不胜感激。
答案 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所需的信息,这只会进行调用。