2013-05-17 6 views
13

Chcę obliczyć unified diff porównując dwa dokumenty. (The diff jest iść w wiadomości e-mail, a Wikipedia mówi unified diff jest najlepszy format diff zwykły tekst).Jak korzystać z biblioteki Team Foundation do obliczania ujednoliconego pliku różnicowego?

Team Foundation ma command line interface zrobić

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

(przykład pliki w https://gist.github.com/hickford/5656513)

Świetne, ale wolę korzystać z biblioteki niż z zewnętrznego procesu, z typowych powodów.

Po wyszukaniu MSDN, znalazłem Team Foundation ma bibliotekę .NET Microsoft.TeamFoundation.VersionControl. Jednak w dokumentacji nie podano żadnych przykładów obliczania różnic.

Jak obliczyć ujednoliconą różnicę przy użyciu biblioteki Team Foundation?


Edit: Próbowałem metody Difference.DiffItems ale to nie działa, plik diff.txt pozostało puste.

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

Znaleziono ktoś kilka lat temu z tym samym problemem. http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/828ad9b0-def5-461c-bf9e-180d57f167a8 –

Odpowiedz

0

Guess to niemożliwe :(Można to zrobić tylko z linii poleceń z tf.exe.

3

Spróbuj 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

Jest wypełniony indeksami, które odnoszą się do oryginalnego pliku. Możesz pobrać zawartość segmentu z plik i wydrukuj je. To powinno się udać rób to, co lubisz. – flup

+0

Czy mógłbyś podać przykład pokazujący, jak wydrukować ujednoliconą różnicę? –

+0

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

Powiązane problemy