получить отчет о различиях в нескольких версиях из TFS?

StackOverflow https://stackoverflow.com/questions/1342956

  •  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
} 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top