如何使用Team Foundation的库计算统一差异?

13

我想计算出比较两个文档的统一差异(diff)(差异将以电子邮件形式发送,维基百科称统一差异是最好的普通文本差异格式)。

Team Foundation有一个命令行接口可用于此操作。

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

(示例文件位于https://gist.github.com/hickford/5656513

非常聪明,但我宁愿使用库而不是启动外部进程,出于通常的原因。

在搜索 MSDN 时,我找到了 Team Foundation 的 .NET 库 Microsoft.TeamFoundation.VersionControl。但是,文档没有给出计算差异的示例。

如何在 Team Foundation 库中计算统一的差异?


编辑:我尝试了方法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));

几年前有人遇到了同样的问题。http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/828ad9b0-def5-461c-bf9e-180d57f167a8 - Colonel Panic
2个回答

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;
        }

它充满了指向原始文件的索引。您可以从文件中检索段的内容并打印它们。这应该放在“随心所欲”的部分。 - flup
请问您能否提供一个打印统一差异的示例? - Colonel Panic
http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/thread/7e473d46-888d-468b-b618-bb80655848f0 - Eugene

0

看来不可能 :( 你只能通过命令行使用 tf.exe 来完成此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接