Как я могу опрашивать историю / журнал Subversion удаленно с Python? - PullRequest
3 голосов
/ 24 октября 2011

Мне нужно найти первого коммиттера ветви без необходимости проверять все ветви.Из командной строки это очень легко сделать:

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

Мне нужно сделать это из скрипта Python, есть идеи, как я могу это сделать?Я проверил привязки Python Subversion, но я не могу понять, как это сделать, даже если казалось, что это можно сделать.

Любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 24 октября 2011

Вы можете просто использовать модуль 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'
}
0 голосов
/ 24 октября 2011

Другой вариант - просто использовать вызов командной строки из 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 из того же пакета ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...