7

我正在尝试为 Team Foundation Server 2010 实现一个插件,该插件将创建有关团队项目中用户的报告。从概念上讲,为了正确实现这个插件,我只需要访问在 Visual Studio 中使用“注释”功能时获得的相同数据:我需要能够知道谁是最后一个创作给定行的人的代码。

我在 Internet 上搜索了文档或代码示例,但我只能找到一些建议,例如使用 TFS 命令行工具或看似不完整的代码示例

我不介意在客户端代码中做很多繁重的工作,但似乎没有一种明显的方法可以获取有关Changeset中代码内容的有用作者数据,也没有从合并详细信息返回中获取。

4

2 回答 2

3

同时,我找到了一个执行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();
        }
    }
于 2015-09-21T08:03:44.047 回答
0

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

SonarQube SCM TFVC 插件

它需要从安装了 Team Foundation Server 对象模型的 Windows 机器上执行分析(TFS 2013 下载)。

于 2018-01-15T10:20:45.203 回答