получить отчет о различиях в нескольких версиях из TFS?
-
20-09-2019 - |
Вопрос
Раньше я использовал другой инструмент управления версиями, и это позволяло мне получать "отчет о различиях".:все изменения, внесенные в файл между версиями X и Y (включая строки, добавленные / удаленные между каждой версией, которых может быть много версий) в одном текстовом файле.Это было довольно удобно в ситуациях, когда вы почти уверены, что раньше в вашем файле был какой-то код, но теперь его нет (удобно, когда ваш бакалавр говорит что-то добавить, а вы думаете "разве я это не убрал?!").
Преимущество здесь в том, что вы получаете один текстовый файл, содержащий все изменения в кодовой базе, которые затем можно искать.Это эквивалентно выполнению сравнения для каждой версии (с 10 по 9, с 9 по 8 и т.д.), А затем сохранению результатов каждого сравнения в текстовый файл.
Я не вижу никакого простого способа сделать это в TFS.Есть ли плагин / powertool, который делает это?Гугл мне ничего не дал.
Решение 2
Павел помог мне двигаться в правильном направлении, но сценарий, к которому я в итоге пришел, был намного сложнее.И все равно это может быть неверно.Мне пришлось учитывать изменения имени файла.
$snapin = get-pssnapin | select-string "Microsoft.TeamFoundation.PowerShell"
if ($snapin -eq $null) {
Write-Host "loading snap in..."
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
}
$fileName = $args[0] Write-Host "// File name " $fileName
$results = @(Get-TfsItemHistory $fileName ) | select changesetid, @{name="Path"; expression={$_.changes[0].item.serveritem}}
$i = 0
$cmdArray = @()
do {
if ( $results[$i+1] -ne "" ) {
$cmdArray += "tf diff ""{0};{1}"" ""{2};{3}"" /format:unified" -f $results[$i].Path, $results[$i].ChangeSetId, $results[$i+1].Path, $results[$i+1].ChangeSetId
} ;
$i++
} until ($i -ge ($results.length - 1))
foreach ($cmd in $cmdArray) {
#Write-Host "// " $cmd
iex $cmd }
Другие советы
Я не знаю ни о каком готовом решении.Однако нетрудно создать его самостоятельно, если у вас есть TFS Power Toys и PowerShell.Попробуйте это в PowerShell:
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
Get-TfsItemHistory foo.cs | foreach {
tf diff "foo.cs;C$($_.ChangesetId)" `
"foo.cs;C$($_.ChangesetId - 1)" `
/format:unified
}