Pregunta

I acostumbrado a utilizar una herramienta de control de fuente diferente y me permitió un "informe diff": todos los cambios realizados en un archivo entre la versión X y la versión de Y (incluyendo líneas añadido / borrado entre cada versión, que podría ser muchas versiones) en un archivo de texto. Fue muy útil para situaciones donde usted es bastante seguro de que algún código solía ser en su archivo, pero ahora no lo es (muy útil para cuando su BA dice añadir algo y usted está pensando "no tomo eso ?!" ).

Aquí la ventaja es que se obtiene un archivo de texto que contiene todos los cambios en una base de código que entonces se puede buscar. Esto es equivalente a hacer un comparan en todas las versiones (10 a 9, 9 a 8, etc) y guardando los resultados de todos los comparan con un archivo de texto.

No veo ninguna manera fácil de hacer esto en TFS. ¿Existe un plugin / powertool que hace esto? El Google me dio nada.

¿Fue útil?

Solución 2

Pavel me consiguió que iba en la dirección correcta, pero el guión que terminó con era mucho más compleja. Y todavía podría no ser correcta. Tenía que dar cuenta de los cambios de nombre de archivo.

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

Otros consejos

No estoy al tanto de cualquier solución fuera de la caja. Sin embargo, no es difícil de hacer uno mismo si tiene TFS Power Toys y PowerShell. Pruebe esto en PowerShell:

Add-PSSnapin Microsoft.TeamFoundation.PowerShell

Get-TfsItemHistory foo.cs | foreach {
  tf diff "foo.cs;C$($_.ChangesetId)" `
          "foo.cs;C$($_.ChangesetId - 1)" `
          /format:unified
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top