Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 将Subversion日志导出到CSV_Svn_Logging - Fatal编程技术网

Svn 将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'

有没有简单的方法将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'] + 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
之外,它们在任何方面都不“相似”;网景公司的人应该为此挨打。