Domanda

Ho usato per usare uno strumento di controllo del codice sorgente diverso e mi ha permesso di ottenere un "rapporto diff": tutte le modifiche apportate a un file tra la versione X e la versione Y (comprese le linee aggiunto / rimosso tra ogni versione, che potrebbe essere molte versioni) in un file di testo. E 'stato piuttosto utile per le situazioni in cui si è abbastanza sicuri che un certo codice usato per essere nel file, ma ora non è (a portata di mano per quando il vostro BA dice di aggiungere qualcosa e stai pensando "non prendo quello fuori ?!" ).

Il vantaggio è che si ottiene un file di testo che ha tutte le modifiche a una base di codice che si può quindi cercare. Ciò equivale a fare un confronto su tutte le versioni (10-9, 9-8, ecc) e quindi salvare i risultati di ogni confronto ad un file di testo.

Non vedo un modo semplice per fare questo in TFS. C'è un plugin / powertool che fa questo? Google mi ha dato nulla.

È stato utile?

Soluzione 2

Pavel mi ha fatto andare nella giusta direzione, ma lo script ho finito con era molto più complessa. E ancora potrebbe non essere corretta. Ho dovuto tenere conto di nome del file cambia.

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

Altri suggerimenti

Non sono a conoscenza di qualsiasi soluzione out-of-the-box. Tuttavia, non è difficile fare uno voi stessi se avete TFS Power Toys e PowerShell. Prova questo in PowerShell:

Add-PSSnapin Microsoft.TeamFoundation.PowerShell

Get-TfsItemHistory foo.cs | foreach {
  tf diff "foo.cs;C$($_.ChangesetId)" `
          "foo.cs;C$($_.ChangesetId - 1)" `
          /format:unified
} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top