Svn 将Subversion日志导出到CSV
有没有简单的方法将subversion日志导出到CSV文件 我想用它们来估算我花在项目上的时间,在电子表格中这样做很容易Svn 将Subversion日志导出到CSV,svn,logging,Svn,Logging,有没有简单的方法将subversion日志导出到CSV文件 我想用它们来估算我花在项目上的时间,在电子表格中这样做很容易 谢谢。这个简短的Python脚本将为您的SVN日志输出提供一个CSV: #!/usr/bin/env python import csv import subprocess import sys import xml.etree.cElementTree as etree log_text = subprocess.Popen(['svn', 'log', '--xml'
谢谢。这个简短的Python脚本将为您的SVN日志输出提供一个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'),
])
它通过命令行参数传递给基础SVN调用,因此如果您只想查看修订版34及更高版本,可以按如下方式调用它:
$ svnlog2csv -r 34:HEAD >my_spreadsheet.csv
谢谢你的剧本!我添加了这一细微的修改,因为我们的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"),
])
干杯,另一个我非常成功的快速解决方案是。它是一个Java程序,可快速将其转换为CSV文件。您还可以使用此处显示的在线版本。通常他会发布JavaScript文章,但我想他也知道Java,因为他们应该非常相似。谢谢大家,非常有用。我发现在Windows计算机上,python 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)
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','/'),
])
(现在,还有谁希望svn日志采用与git日志相同的选项??;-)我找到了这个方便的小脚本
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
导出日期为2015年5月1日至2015年5月31日的svn日志list.csv。。这里我用分号作为分隔符。。因为我的开发人员在他们的笔记中使用逗号。FYI-您不需要导入
编解码器
来调用字符串上的编码
;这就是说,这是一个有用的补充,我希望你会原谅我采用它。谢谢爪哇!=JavaScript除了名称中有Java
之外,它们在任何方面都不“相似”;网景公司的人应该为此挨打。