Экспорт журнала Subversion в CSV - PullRequest
6 голосов
/ 23 апреля 2010

Есть ли простой способ экспортировать журналы Subversion в файл CSV?

Я хочу использовать их, чтобы приблизить мои часы, потраченные на проект, и сделать это в электронной таблице будет легко.

Спасибо.

Ответы [ 5 ]

9 голосов
/ 23 апреля 2010

Этот короткий скрипт Python предоставит CSV вывод вашей записи SVN:

#!/usr/bin/env python

import csv
import subprocess
import sys
import xml.etree.cElementTree as etree

log_text = subprocess.Popen(['svn', 'log', '--xml'] + sys.argv[1:],
                            stdout=subprocess.PIPE).communicate()[0]
log_xml = etree.XML(log_text)

csv_writer = csv.writer(sys.stdout)

for child in log_xml.getchildren():
        csv_writer.writerow([
                child.attrib['revision'],
                child.findtext('date'), 
                child.findtext('author').encode('utf-8'),
                child.findtext('msg').encode('utf-8'),
        ])

Он передает аргументы командной строки в базовый вызов SVN, поэтому, если вы хотите видеть только версию 34 и более позднююВы можете вызвать его следующим образом:

$ svnlog2csv -r 34:HEAD >my_spreadsheet.csv 
2 голосов
/ 04 марта 2013

Спасибо всем, очень полезно.Я обнаружил, что на компьютерах с Windows python csv_writer ожидает вывода двоичного файла, в противном случае выдаются дополнительные возвраты каретки.Следующий сценарий обрабатывает этот случай, а также удаляет символы новой строки в середине сообщений коммита (заменены косой чертой), чтобы обеспечить вывод в одну строку.те же опции, что и в git log ??; -)

2 голосов
/ 10 декабря 2010

Спасибо за скрипт! Я добавил эту небольшую модификацию, потому что наш репозиторий SVN - UTF-8 с акцентированными символами (французский язык) и скрипт разобрался:

#!/usr/bin/env python

import csv
import subprocess
import sys
import xml.etree.cElementTree as etree
import codecs

log_text = subprocess.Popen(['svn', 'log', '--xml'] + sys.argv[1:],
                            stdout=subprocess.PIPE).communicate()[0]
log_xml = etree.XML(log_text)

csv_writer = csv.writer(sys.stdout)

for child in log_xml.getchildren():
        csv_writer.writerow([
                child.attrib['revision'],
                child.findtext('date'),
                child.findtext('author'),
                child.findtext('msg').encode("utf-8"),
        ])

Приветствия

1 голос
/ 04 октября 2012

Еще одно быстрое решение, с которым я добился большого успеха, это здесь, в блоге Криса .Это Java-программа, которая быстро конвертирует ее в файл CSV.Вы также можете использовать онлайн-версию, которая показана там.Обычно он публикует статьи о JavaScript, но я думаю, что он тоже знает Java, поскольку они предположительно очень похожи.

0 голосов
/ 03 июня 2015

Я нашел этот удобный маленький скрипт

svn log -r {2015-05-01}:{2015-05-31} http://svn.company.co.id/dev/ |  tr -d '\n' | sed -r 's/-{2,}/\n/g' | sed -r 's/ \([^\)]+\)//g' | sed -r 's/^r//' | sed -r "s/[0-9]+ lines?//g" | sort -g | sed 's/ | /;/g' > list.csv

, который экспортирует svn log с даты 1 мая 2015 по 31 мая 2015 list.csv .. здесь я использую точку с запятой в качестве разделителей .. потому что мои разработчикииспользуйте запятые в своих заметках ..

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