Как экспортировать журнал 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
Я мог бы создать script, чтобы переформатировать это в CSV, если это необходимо. Но я действительно не хочу: (
Ответы
Ответ 1
-
Используйте следующую команду Subversion, чтобы создать файл xml из журнала репозитория:
svn log -v --xml> repository_log.xml
-
Импортируйте XML файл в электронную таблицу Excel (не уверен, будет ли он работать с LibreOffice/OpenOffice), например, из cmd:
Запустите Excel repository_log.xml
-
Затем вы можете сохранить его в виде таблицы.
Это!
Ответ 2
Поскольку вы используете 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]()
Ответ 3
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/
Он перечислил два решения на этой странице. Первая - это Java-программа, которая выводит CSV. Вторая - это страница JSBin, которая преобразует вложенный SVN-журнал в CSV.
Ответ 4
Ответ Майкла Соренса удивителен, и именно так я извлекаю данные журнала SVN. Я публикую дополнительный ответ, в котором показано, как применить его решение в файле сценария, который можно запустить в одно мгновение.
Создайте и сохраните сценарий, показанный ниже, в файл .PS1. Откройте и просмотрите файл в основной программе "Блокнот". Затем прикрепите файл. Теперь все, что вам нужно сделать, это щелкнуть правой кнопкой мыши по значку панели задач моего Блокнота, навести курсор на файл, щелкнуть правой кнопкой мыши по файлу, в появившемся окне выбрать "Запускать с PowerShell". В одном случае всплывает файл данных CSV, и для меня он открывается в Excel.
О файле сценария, который вы можете просмотреть и пересмотреть.
- В моем репо тонны коммитов, поэтому я получил только последние 20
- Обновите пути к файлам
- Использовал командлет Invoke-Item для автоматического открытия выходного файла
- Как предлагается в этой теме, вы можете добавить
@{n='Message'; e={$_.msg }}
@{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]()