以编程方式获取TFS责备(注释)数据

本文关键字:注释 数据 责备 TFS 编程 方式 获取 | 更新日期: 2023-09-27 18:03:47

我正在尝试实现团队基础服务器2010插件,将创建关于团队项目用户的报告。从概念上讲,为了正确实现这个插件,我所需要的只是访问您在Visual Studio中使用"Annotate"功能时获得的相同数据:我需要能够告诉谁是最后一个编写给定行代码的人。

我在互联网上搜索了文档或代码示例,但我所能找到的要么是使用TFS命令行工具之类的建议,要么是看似不完整的代码示例。

我不介意在客户端代码中做很多繁重的工作,但是似乎没有一个明显的方法来获得关于内容的有用的作者数据在一个变更集中的代码,也没有从合并细节返回。

以编程方式获取TFS责备(注释)数据

同时,我发现了一个执行Team Foundation Power Tools过程并解析其输出的工作解决方案:

private readonly Regex m_Regex = new Regex(@"^(?<changeset>'d+)(?<codeLine>.*)", RegexOptions.Compiled | RegexOptions.Multiline);
public List<Changeset> GetAnnotations(string filepath, string codeText)
    {
        var versionControlServer = CreateVersionControlServer();
        return m_Regex.Matches(ExecutePowerTools(filepath))
            .Cast<Match>()
            .Where(m => m.Groups["codeLine"].Value.Contains(codeText))
            .Select(v => versionControlServer.GetChangeset(int.Parse(v.Groups["changeset"].Value), false, false))
            .ToList();
    }
    private static VersionControlServer CreateVersionControlServer()
    {
        var projectCollection = new TfsTeamProjectCollection(new Uri(@"TFS URL"));
        var versionControlServer = projectCollection.GetService<VersionControlServer>();
        return versionControlServer;
    }
    private static string ExecutePowerTools(string filepath)
    {
        using (var process = Process.Start(TfptLocation, string.Format("annotate /noprompt {0}", filepath)))
        {
            process.WaitForExit();
            return process.StandardOutput.ReadToEnd();
        }
    }

我有非常类似的需求,以获得文件中特定属性的详细信息,例如谁添加的,何时添加的,相关的工作项等;以下GitHub项目正在实施,以获得所需的细节和所需的最小更改工作-

SonarQube SCM TFVC插件

它需要在安装了Team Foundation Server Object Model(为TFS 2013下载)的Windows机器上执行分析。