ottenere un rapporto di diff multi-versione da TFS?
-
20-09-2019 - |
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.
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
}