【问题标题】:Extract TFS Changeset difference to excel [closed]将 TFS 变更集差异提取到 excel [关闭]
【发布时间】:2016-03-29 16:18:11
【问题描述】:

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

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

我无法使用任何第三方比较工具,例如“winmerge”或“beyond compare”。

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

【问题讨论】:

    标签: excel api powershell tfs


    【解决方案1】:

    一篇很棒的文章,其中讨论了如何使用 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());
        } 
      }
    

    【讨论】:

    • 谢谢..Patrick.. 我能够将差异写入文本文件。但我想以更自定义的格式将其放入 excel 文件中。让我们说一下与 excel 列的区别。在 C# 中是否有现成的解析器可用.. 尝试 ParseDiff 但找不到任何文档.. 有没有其他方法可以做到这一点?
    • 你的意思是只想通过C#把内容放到excel里面吗?这是官方的介绍support.microsoft.com/en-us/kb/302084
    • 不...这就是我要找的...假设 TFS 生成以下差异 @@ -212,8 +223,8 @@ 一些文本 ABC - AAAAAAA - BBBBBB + CCCCCC + DDDDDD 我想阅读和创建一个包含已删除文本和添加了文本。有没有可以读取统一差异的解析器,我可以在 .Net 中使用?
    • 对此我不确定。据我所知,没有现成的解析器。建议您创建一个新线程来讨论这个问题,添加 C# 或 .Net 标记。这也将使论坛中的答案搜索更容易,并且对其他社区成员也有好处。
    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多