回答
這個簡短的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
Thanx for the script!我添加了這個輕微的修改,因爲我們的SVN倉庫是UTF-8重音字符(法國)和borked腳本:
#!/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"),
])
乾杯,
僅供參考 - 您不需要導入'編解碼器'以在字符串上調用'encode';這是一個有用的補充,我希望你會原諒我採用它。謝謝! – 2010-12-18 03:17:13
另一種快速的解決方案,我曾與是here at Chris' blog巨大的成功。這是一個Java程序,可以快速將其轉換爲CSV文件。您也可以使用在那裏顯示的在線版本。通常他會發布JavaScript文章,但我猜他也知道Java,因爲他們看起來很相似。
Java!= JavaScript除了名稱中包含'Java'之外,它們不是「相似」的;網景公司的某個人應該被毆打。 – 2012-11-30 13:42:12
謝謝大家,非常有幫助。我發現在Windows電腦上,python csv_writer需要二進制文件輸出,否則會發出額外的回車符。以下腳本處理這種情況,並且還會在提交消息(用前斜線替換)中刪除換行符以確保單行輸出。
#!/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
其中出口SVN記錄從日期2015年5月1日至2015年5月31日list.csv ..在這裏我使用分號作爲分隔符..因爲我的開發人員在他們的筆記中使用逗號..
- 1. 將日期導出爲CSV
- 2. 如何將Subversion日誌導出到電子表格
- 3. 編輯Subversion日誌
- 4. twilio通過python將消息日誌導出到csv
- 5. 導出Windows事件日誌爲CSV - Powershell 2.0
- 6. 將evtx日誌轉換爲csv錯誤
- 7. 將查詢導出爲CSV
- 8. 將HIVE導出爲CSV
- 9. MySQLi將表導出爲CSV
- 10. 將Neo4j導出爲.csv
- 11. 將DBgrid導出爲CSV?
- 12. 將表導出爲CSV
- 13. 將sqlite導出爲csv
- 14. 將圖像導出爲CSV
- 15. 將Get-ADComputer導出爲CSV
- 16. 將MySql表導出爲CSV?
- 17. 將sas表導出爲CSV
- 18. 將ListView導出爲CSV
- 19. 將列名導出爲CSV
- 20. SVN導出日誌
- 21. 如何生成上個月的git commit日誌,並將其導出爲CSV?
- 22. 導軌 - CSV(導出爲csv)
- 23. Subversion使用日誌分析
- 24. 將ntopng日誌導出到logstash
- 25. PHP日期導出爲CSV格式
- 26. MySQL將查詢輸出導出爲CSV
- 27. XCode 7 UITest導出日誌
- 28. RDS導出日誌文件
- 29. 使用PowerShell事件日誌和導出過濾器,以CSV
- 30. 導出爲CSV表
謝謝!這個腳本對我很好。 – Johann 2012-07-25 21:53:54