2013-05-17 5 views
13

मैं दो दस्तावेज़ों की तुलना में unified diff की गणना करना चाहता हूं। (Diff एक ईमेल में जाने के लिए है, और विकिपीडिया का कहना है एकीकृत diff में सामान्य पाठ diff स्वरूप है।)यूनिफाइड डिफ की गणना करने के लिए टीम फाउंडेशन की लाइब्रेरी का उपयोग कैसे करें?

टीम फाउंडेशन एक command line interface करना है कि

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

(https://gist.github.com/hickford/5656513 पर उदाहरण फ़ाइलें)

शानदार, लेकिन सामान्य कारणों से, मैं बाहरी प्रक्रिया शुरू करने की बजाय लाइब्रेरी का उपयोग करना चाहता हूं।

एमएसडीएन खोजना, मैंने पाया कि टीम फाउंडेशन में .NET लाइब्रेरी Microsoft.TeamFoundation.VersionControl है। हालांकि, प्रलेखन ने एक अंतर की गणना करने के कोई उदाहरण नहीं दिए।

मैं टीम फाउंडेशन लाइब्रेरी के साथ एक एकीकृत diff की गणना कैसे करूं?


संपादित करें: मैं विधि Difference.DiffItems कोशिश की, लेकिन यह काम नहीं किया था-फ़ाइल diff.txt खाली छोड़ दिया गया था।

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

मिले किसी और एक ही समस्या के साथ कुछ साल पहले किसी को। http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/828ad9b0-def5-461c-bf9e-180d57f167a8 –

उत्तर

0

यह संभव नहीं है लगता प्रयास करें :(आप केवल tf.exe साथ कमांड लाइन से ऐसा कर सकते हैं।

3

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

यह उन इंडेक्स से भरा है जो मूल फ़ाइल को संदर्भित करते हैं। आप सेगमेंट की सामग्री को पुनर्प्राप्त कर सकते हैं फ़ाइल और उन्हें प्रिंट करें। इसमें जाना चाहिए जो कुछ आपको पसंद है वह करो। – flup

+0

कृपया एक उदाहरण दे सकते हैं कि एक एकीकृत diff कैसे प्रिंट करें? –

+0

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

संबंधित मुद्दे