Pythonを使用してSVNのXMLログをCSVに変換しています...
#!/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'),
])
たとえば、出力が得られます...
2022,2013-01-02T06:11:40.500850Z,dave.d@email.com,"Ticket 16057735 - Blah "
2023,2013-01-02T06:43:22.247709Z,john.c@email.com,Ticket:16060718 Blah Blah
2027,2013-01-02T07:43:00.326583Z,dave.d@email.com,Ticket 16060936 - Blah Blah
<msg>
しかし、.csv出力の作成中にチケット番号のみを取得するためにフィルタリング/解析したいと考えています。
perl を使用するなどの代替手段は問題ありません。
更新:コメントにチケット #### がないリビジョンのログをスキップする方法 ( <msg>
)