如何将Subversion日志导出到电子表格

lam*_*cro 18 xml svn tortoisesvn logging spreadsheet

有没有办法将Subversion日志消息导出到电子表格(excel,csv等)格式?

从TortoiseSVN的Log Messages窗口复制时,它会按以下格式粘贴文本:

Revision: 174
Author: CARDINALHEALTH\enrique.colon
Date: Wednesday, July 11, 2012 9:37:02 AM
Message: CR #58514
----
Modified : /trunk/ob_progs/utility/connect_peek
Run Code Online (Sandbox Code Playgroud)

如有必要,我可以创建一个脚本,将其重新格式化为CSV格式.但我真的不想:(

lam*_*cro 36

  1. 使用以下Subversion命令从存储库的日志中创建xml文件:

    svn log -v --xml> repository_log.xml

  2. 将xml文件导入Excel电子表格(不确定它是否可以与LibreOffice/OpenOffice一起使用).

  3. 然后,您可以将其另存为电子表格.

而已!


Mic*_*ens 26

由于您使用的是TortoiseSVN,因此在Windows上使用PowerShell是一种直接的方法.从此函数开始,将svn日志数据转换为PowerShell对象:

Function Get-SvnLogData()
{
    ([xml](svn log -v --xml)).log.logentry | % {
        $nestedEntry = $_
        $_.paths.path | % {
            $path = $_
            $nestedEntry | Select-Object -Property `
                Author, `
                @{n='Revision'; e={([int]$_.Revision)}}, `
                @{n='Date';     e={Get-Date $_.Date  }}, `
                @{n='Action';   e={$path.action      }}, `
                @{n='Path';     e={$path.InnerText   }}`
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

默认输出是一个列表,例如:

author   : smith
Revision : 29091
Date     : 6/26/2012 7:30:44 AM
Action   : M
Path     : /Utility/trunk/Distribution/file1.txt

author   : jones
Revision : 28987
Date     : 6/21/2012 3:56:51 PM
Action   : M
Path     : /Utility/trunk/Distribution/file2.txt

author   : msorens
Revision : 28934
Date     : 6/21/2012 8:22:17 AM
Action   : M
Path     : /Utility/trunk/Distribution/file3.txt

author   : jones
Revision : 28835
Date     : 6/19/2012 8:56:08 AM
Action   : A
Path     : /Utility/trunk/DAL/stuff.txt
. . .
Run Code Online (Sandbox Code Playgroud)

但是用这个命令......

Get-SvnLogData | Format-Table -AutoSize
Run Code Online (Sandbox Code Playgroud)

...你可以告诉PowerShell为你提供一个表而不是列表,例如:

author     Revision Date                   Action Path
------     -------- ----                   ------ ----
smith         29091 6/26/2012 7:30:44 AM   M      /Utility/trunk/Distribution/file1.txt
jones         28987 6/21/2012 3:56:51 PM   M      /Utility/trunk/Distribution/file2.txt
msorens       28934 6/21/2012 8:22:17 AM   M      /Utility/trunk/Distribution/file3.txt
jones         28835 6/19/2012 8:56:08 AM   A      /Utility/trunk/DAL/stuff.txt
. . .
Run Code Online (Sandbox Code Playgroud)

并实际回答你的问题:-)你可以很容易地将输出转换为CSV并使用如下命令将其发送到文件:

Get-SvnLogData | Export-Csv -Path temp.csv
Run Code Online (Sandbox Code Playgroud)

双击生成的文件在Excel中打开它:

SVN到Excel

  • +1使用PowerShell并解释您的想法. (3认同)
  • 哇,太棒了,我不知道PowerShell是什么,多亏了这个,我没有发现一个新的工具.导出日志的脚本也很完美.+1 (3认同)