Grazie a tutti, molto utile. Ho trovato che su computer Windows il csv_writer python si aspetta l'output del file binario, altrimenti vengono emessi i ritorni a capo extra. Il seguente script gestisce questo caso e rimuove anche i newline nel mezzo dei messaggi di commit (sostituiti con front-slash) per garantire un output su una sola riga.
#!/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)
if sys.platform == "win32":
import os, msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
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").replace('\n','/'),
])
(Ora, chi altro vuole svn log preso le stesse opzioni come log git ?? ;-)
Grazie! Questo script ha funzionato alla grande per me. – Johann