2012-02-27 11 views
12

का उपयोग करके डिफिंग करना क्या किसी को पता है कि टीएफएस अंतर का उपयोग करना संभव है। डिफफाइल() विधियों को उन स्रोतों पर उपयोग करना संभव है जो स्रोत नियंत्रण में नहीं हैं? मुझे पता है कि जब मैं स्रोत नियंत्रण यूआई में हूं, तो मैं स्थानीय पथ चुन सकता हूं जो मुझे वर्कस्पेस के बाहर जाने देता है। मैंने इसे काम करने के लिए कुछ प्रयास किए हैं, लेकिन मुझे यकीन नहीं है कि डिफ सेगमेंट परिणामों को कैसे पढ़ा जाए।टीएफएस एपीआई

options.Flags = DiffOptionFlags.None; 
    options.OutputType = DiffOutputType.Unified; 
    options.TargetEncoding = Console.OutputEncoding; 
    options.SourceEncoding = Console.OutputEncoding; 
    options.StreamWriter = new StreamWriter(memStream); 
    options.StreamWriter.AutoFlush = true; 

    DiffSegment seg = Difference.DiffFiles(pathA, Encoding.UTF8.WindowsCodePage, pathB, Encoding.UTF8.WindowsCodePage, options); 

कुछ लाइट परीक्षण में मुझे लगता है कि जोड़ दिए जाते हैं क्षेत्रों को देखने के लिए लग सकता है लेकिन OriginalStart ModifiedStart मैच के लिए लगता है तो मैं बस यह करने के लिए नहीं कर सकते हैं। अगर किसी के पास एक सभ्य डिफ ​​एपीआई पर सिफारिशें हैं तो मैं खुली हूं।

उत्तर

9

tfs api सबसे निश्चित रूप से आपको दो स्थानीय फ़ाइलों की तुलना करने की अनुमति देता है। मोहम्मद संक्षेप में वर्णन करता है के रूप में here

DiffSegment segment = Difference.DiffFiles(
    file1, 
    FileType.Detect(file1, null), 
    file2, 
    FileType.Detect(file2, null), 
    new DiffOptions()); 

: मुझे नहीं लगता कि आप DiffOptionFlags के सबसे की क्या ज़रूरत है, तो आप सिर्फ निम्न कर सकते हैं।

रसेल विवरण में वर्णन करता है कि डिफ सेगमेंट here के साथ क्या करना है।

उदाहरण के लिए मैं निम्नलिखित

do 
{ 
    Console.WriteLine(segment.Type + " " + segment.OriginalStart + " " + Segment.OriginalLength); 
} while ((segment = segment.Next) != null); 

आशा इस मदद करता था!

+0

यह संकलित करता है, लेकिन यह मेरे लिए काम नहीं करता है। http://stackoverflow.com/q/16612156/284795 –

1

मुझे लगता है कि टीएफएस एपीआई का उपयोग करने का उत्तर शायद सही है, लेकिन मैंने सोचा कि मैं यह भी उल्लेख करूंगा कि आप उस टूल का उपयोग कर सकते हैं जो विजुअल स्टूडियो लॉन्च करता है यदि आप एपीआई का उपयोग करके कुछ कोडिंग के साथ गड़बड़ नहीं करना चाहते हैं।

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\diffmerge.exe

VS2012 में और VS2013:, तो

Compare two files: 
    diffmerge.exe Original Modified [OriginalLabel] [ModifiedLabel] 
       [/ignoreeol] [/ignorespace] [/ignorecase] [/noprompt] 
Merge three files into fourth file: 
    diffmerge.exe /merge ServerInputFile LocalInputFile BaseInputFile ResultOutputFile 
       [ServerInputFileLabel] [LocalInputFileLabel] [BaseInputFileLabel] [/noprompt] 

Options: 
    /merge - merge the files; without /merge, the files will be compared 
    /ignoreeol - ignore end of line character differences 
    /ignorespace - ignore differences consisting only of whitespace 
    /ignorecase - ignore differences in casing 
    /help - show this help message 
    /noprompt - use Notepad for showing the diff or merge contents 

यदि आप बिना/diffmerge.exe फोन झंडा, विलय:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\vsDiffMerge.exe

यहाँ उपयोग है जीयूआई खुल जाएगा। मुझे यकीन नहीं है कि यह वह व्यवहार है जो आप चाहते हैं या नहीं, लेकिन सिर्फ सोचा कि मैं इसका उल्लेख करूंगा।

+0

ऐसा लगता है कि निष्पादन योग्य का नाम VS2012 और VS2013 में vsDiffMerge.exe में बदल दिया गया था। – deadlydog