2013-05-17 3 views
13

Voglio calcolare un unified diff confrontando due documenti. (Il diff è quello di andare in una e-mail, e Wikipedia dice diff unificato è il miglior formato diff testo normale.)Come utilizzare la libreria di Team Foundation per calcolare la differenza unificata?

Team Foundation ha un command line interface fare che

> tf diff /format:unified alice.txt bob.txt 
- Alice started to her feet, 
+ Bob started to her feet, 

(File di esempio a https://gist.github.com/hickford/5656513)

Brillante, ma preferirei usare una libreria piuttosto che avviare un processo esterno, per le solite ragioni.

Ricerca in MSDN, ho trovato che Team Foundation ha una libreria .NET Microsoft.TeamFoundation.VersionControl. Tuttavia, la documentazione non ha fornito esempi di calcolo di diff.

Come si calcola un diff unificato con la libreria di Team Foundation?


Edit: ho provato il metodo Difference.DiffItems, ma non ha funzionato: il file diff.txt è stato lasciato vuoto.

var before = @"c:\alice.txt"; 
var after = @"c:\bob.txt"; 

var path = @"c:\diff.txt"; 
using (var w = new StreamWriter(path)) 
{ 
    var options = new DiffOptions(); 
    options.OutputType = DiffOutputType.Unified; 
    options.StreamWriter = w; 

    Difference.DiffFiles(
    before, FileType.Detect(before, null), 
    after, FileType.Detect(after, null), 
    options); 
} 

Console.WriteLine(File.ReadAllText(path)); 
+0

qualcuno ha trovato altro di qualche anno fa con lo stesso problema. http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/828ad9b0-def5-461c-bf9e-180d57f167a8 –

risposta

0

Immagino che non è possibile :(Si può farlo solo dalla riga di comando con tf.exe.

3

Prova DiffSegment

 var diff = Difference.DiffFiles(
     before, FileType.Detect(before, null), 
     after, FileType.Detect(after, null), 
     options); 

     while (diff != null){     
      //DO What you like with the diff(s) 
      diff = diff.Next; 
     } 
+0

È pieno di indici che fanno riferimento al file originale. Puoi recuperare il contenuto del segmento da il file e stampale. Dovrebbe andare a finire fai quello che ti piace. – flup

+0

Si prega di fornire un esempio che mostra come stampare un diff unificato? –

+0

http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/7e473d46-888d-468b-b618-bb80655848f0 – Eugene

Problemi correlati