получить отчет по разным версиям от TFS? - PullRequest
3 голосов
/ 27 августа 2009

Раньше я использовал другой инструмент управления версиями, и он позволял мне получать «отчет о различиях»: все изменения, внесенные в файл между версией X и версией Y (включая добавленные / удаленные строки между каждой версией, которые могли быть много версий) в одном текстовом файле. Это было очень удобно для ситуаций, когда вы почти уверены, что какой-то код был в вашем файле, но теперь это не так (удобно, когда ваш БА говорит что-то добавить, а вы думаете: «Разве я не убрал это ?!» ).

Преимущество здесь в том, что вы получаете один текстовый файл со всеми изменениями в кодовой базе, который вы затем можете искать. Это эквивалентно выполнению сравнения для каждой версии (от 10 до 9, от 9 до 8 и т. Д.), А затем сохранению результатов каждого сравнения в текстовом файле.

Я не вижу простого способа сделать это в TFS. Есть ли плагин / powertool, который делает это? Google не дал мне ничего.

Ответы [ 2 ]

4 голосов
/ 27 августа 2009

Я не знаю ни одного готового решения. Тем не менее, это не сложно сделать самостоятельно, если у вас есть 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
} 
3 голосов
/ 29 августа 2009

Павел заставил меня двигаться в правильном направлении, но сценарий, с которым я закончил, был намного сложнее. И все же может быть не правильно. Я должен был учитывать изменения имени файла.

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