将TFS Changeset差异提取为excel

时间:2015-12-23 09:13:14

标签: excel api powershell tfs

我是stackoverflow&的忠实粉丝。从这里有很多解决方案。 最近我遇到了障碍。 我想比较TFS 2013中的两个更改集,并以自定义格式提取对Excel文件的更改。 我会详细解释

有一个文件夹" ABC"在TFS。我想比较第一个&历史记录和文件夹中此文件夹的最新更改集然后浏览所有已更改的文件&将更改提取到Excel文件。

我不能使用像#34; winmerge"或者"超越比较"。

有没有办法使用TFS API / Powershell等来完成我正在寻找的东西? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

一篇很棒的文章,讨论了如何使用Buck Hodge的TFS API比较不同版本的树的更多详细信息。请检查:https://blogs.msdn.microsoft.com/buckh/2006/04/06/how-to-compare-diff-trees-at-different-versions-using-the-api/(强烈推荐)

这也是TFS API获取历史记录,下载文件,比较文件(但使用winmerge)http://www.codeproject.com/Articles/243655/TFS-SDK-Compare-Changesets-programmatically的一个很好的例子。您可以使用diffFiles(X,X)代替它,它是一个示例代码:

using (var projectCollection = new TfsTeamProjectCollection(new Uri(repositoryUrl))) 
  {
    projectCollection.EnsureAuthenticated();
    var versionControlServer = (VersionControlServer)projectCollection.GetService(typeof(VersionControlServer));

    string path = "$/MyProject/path/to/file.xml"

    var before = new DiffItemVersionedFile(versionControlServer, path, VersionSpec.ParseSingleSpec(minRevision.ToString(), null));
    var after = new DiffItemVersionedFile(versionControlServer, path, VersionSpec.ParseSingleSpec(maxRevision.ToString(), null));

    using (var stream = new MemoryStream())
    using (var writer = new StreamWriter(stream))
    {
        var options = new DiffOptions();
        options.Flags = DiffOptionFlags.EnablePreambleHandling;
        options.OutputType = DiffOutputType.Unified;
        options.TargetEncoding = Encoding.UTF8;
        options.SourceEncoding = Encoding.UTF8;
        options.StreamWriter = writer;
        Difference.DiffFiles(versionControlServer, before, after, options, path, true);
        writer.Flush();

       var diff = Encoding.UTF8.GetString(stream.ToArray());
    } 
  }