2013-05-17 20 views
13

Tôi muốn tính toán số unified diff so sánh hai tài liệu. (Các diff là để đi trong một email, và Wikipedia nói khác biệt thống nhất là định dạng diff văn bản đơn giản nhất.)Làm thế nào để sử dụng thư viện Team Foundation để tính toán khác biệt thống nhất?

Team Foundation có một command line interface làm điều đó

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

(Ví dụ file cùng https://gist.github.com/hickford/5656513)

Tuyệt vời, nhưng tôi muốn sử dụng thư viện hơn là bắt đầu quá trình bên ngoài, vì những lý do thông thường.

Tìm kiếm MSDN, tôi thấy Team Foundation có thư viện .NET Microsoft.TeamFoundation.VersionControl. Tuy nhiên, tài liệu này không đưa ra bất kỳ ví dụ nào về tính toán khác biệt.

Làm cách nào để tính toán khác biệt thống nhất với thư viện Team Foundation?


Edit: Tôi đã thử các phương pháp Difference.DiffItems nhưng nó đã không làm việc-file diff.txt được bỏ trống.

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

Tìm thấy ai đó một vài năm trước đây với cùng một vấn đề. http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/828ad9b0-def5-461c-bf9e-180d57f167a8 –

Trả lời

0

Đoán nó không thể :(Bạn chỉ có thể làm điều này từ dòng lệnh với tf.exe.

3

Vui lòng thử 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

Nó chứa đầy các chỉ mục tham chiếu đến tệp gốc. Bạn có thể truy xuất nội dung của phân đoạn từ các tập tin và in chúng. Điều đó sẽ đi vào làm những gì bạn thích. – flup

+0

Bạn có thể đưa ra một ví dụ cho thấy cách in một khác biệt thống nhất không? –

+0

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

Các vấn đề liên quan