web-dev-qa-db-ja.com

Subversionログをスプレッドシートにエクスポートする方法

Subversionログメッセージをスプレッドシート(​​Excel、csvなど)形式にエクスポートする方法はありますか?

TortoiseSVNの[ログメッセージ]ウィンドウからコピーする場合、次の形式でテキストを貼り付けます。

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

必要に応じて、これをCSVに再フォーマットするスクリプトを作成できます。しかし、私は本当にしたくない:(

18
lamcro
  1. 次のSubversionコマンドを使用して、リポジトリのログからxmlファイルを作成します。

    svn log -v --xml> repository_log.xml

  2. XmlファイルをExcelスプレッドシートにインポートします(LibreOffice/OpenOfficeで動作するかどうかは不明です)。 cmdから:

    Excelリポジトリのlog.xmlを開始

  3. その後、それをスプレッドシートとして保存できます。

それだけです!

36
lamcro

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   }}`
        }
    }
}

デフォルトの出力はリストです。例:

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
. . .

ただし、このコマンドでは...

Get-SvnLogData | Format-Table -AutoSize

... 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
. . .

そして実際にあなたの質問に答えるために:-)次のようなコマンドで出力をCSVに変換してファイルに送るのと同じくらい簡単にできます:

Get-SvnLogData | Export-Csv -Path temp.csv

結果のファイルをダブルクリックすると、Excelで開きます。

SVN to Excel

26
Michael Sorens

Chris Westは、非常にシンプルでありながら効果的なソリューションを思い付きました。 http://gotochriswest.com/blog/2012/10/02/svn-log-to-csv-converter/ 実際、ページはここに移動したようです: http://cwestblog.com/2012/10/02/svn-log-to-csv-converter/

彼はそのページに2つの解決策を挙げました。 1つ目は、CSVを出力するJava=プログラムです。2つ目は、貼り付けたSVNログをCSVに変換するJSBinページです。

2
Brandon

Michael Sorensの答えは素晴らしく、これがSVNログデータを抽出する方法です。すぐに実行できるスクリプトファイルに彼のソリューションを適用する方法を示す補足回答を投稿しています。

下記のスクリプトを作成して.PS1ファイルに保存します。基本的なメモ帳プログラムでファイルを開いて表示します。次に、ファイルを固定します。これで、必要なのは、メモ帳のタスクバーアイコンを右クリックし、ファイルにカーソルを合わせ、ファイルを右クリックして、フライアウトウィンドウから[PowerShellで実行]を選択することだけです。インスタンスでは、CSVデータファイルがポップアップ表示され、私にとってはExcelで開きます。

確認および修正したいスクリプトファイルについて。

  • 私のリポジトリにはたくさんのコミットがあるので、最後の20だけを取得しました
  • ファイルパスを更新する
  • Invoke-Itemコマンドレットを使用して 出力ファイルを自動的に開く
  • このスレッドで提案されているように、@{n='Message'; e={$_.msg }}

Get-SvnLogData.ps1

# Get-SvnLogData | sort-Object @{Expression="Date"; Descending=$true} | Select-Object -first 20 | Export-Csv -Path temp.csv

#############################################################
# <STEP 1: MUST FIRST CREATE THIS FUNCTION.....>
    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   }}`
            }
        }
    }
# <\STEP 1>

# <STEP 2: NAVIGATE TO THE DIRECTORY.....>
    cd \

    cd SVN\BusinessAnalysts\SSRSReports\ssrs2016_solution
# <\STEP 2>

# <STEP 3: EXTRACT THE LOGDATA TO CSV; OPEN THE FILE.....>    
    Get-SvnLogData | sort-Object @{Expression="Date"; Descending=$true} | Select-Object -first 20 | Export-Csv -Path temp.csv

    #REM https://social.technet.Microsoft.com/Forums/windowsserver/en-US/399abe9a-195c-4362-9081-6fd9d79b88ad/need-help-converting-getlocation-info-to-string?forum=winserverpowershell 
    $CurrentDirectory= get-location
    $path = $CurrentDirectory.tostring() + "\"

    Invoke-Item $path"temp.csv"
# <\STEP 3>

#############################################################

チュートリアル:PS1ファイル-PowerShellで実行

enter image description here