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

2024-04-13

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

我在互联网上搜索了文档或代码示例,但我能找到的只是诸如以下的建议使用 TFS 命令行工具 https://stackoverflow.com/questions/74526/tfs-annotate-blame-summary-report-for-a-project或者看似不完整代码示例 https://stackoverflow.com/questions/6531408/get-history-of-file-changes-from-tfs-to-implement-custom-blame-behaviour-of-ex.

我不介意在客户端代码中做很多繁重的工作,但似乎没有一种明显的方法来获取有关contents中的代码变更集 https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.changeset.aspx,也不从合并细节 https://msdn.microsoft.com/en-us/library/ff735782.aspx return.


同时我找到了一个执行的工作解决方案Team Foundation 电动工具 https://visualstudiogallery.msdn.microsoft.com/b1ef7eb2-e084-4cb8-9bc7-06c3bad9148f处理并解析其输出:

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();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式获取 TFS 责任(注释)数据 的相关文章

  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 如何在 C# 控制台应用程序中将修饰符(ctrl、alt、shift)按键捕获为单个按键?

    Console ReadKey 仅在按下 正常 键时捕获输入 然后将修饰符 如果有 附加为键信息的一部分 如何将单个修饰键注册为输入 提供了一种解决方案这个链接 https blogs msdn microsoft com toub 200
  • 从 WebBrowser 控件 C# 获取滚动值

    我试图在 WebBrowser 控件中获取网页的 Y 滚动索引 但无法访问内置滚动条的值 有任何想法吗 对于标准模式下的 IE 使用文档类型 正如你所说 scrollTop是的财产元素 而不是 HtmlDocument htmlDoc th
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • 如何在没有 ChunkLoadError 的情况下使用 React 代码拆分和 Firebase 托管

    我需要使用React 代码拆分 https create react app dev docs code splitting 使用托管在 Firebase 托管上的 Create React App 但是 我有一个问题 因为Firebase
  • 有没有办法检测外部 javascript 文件是否已完全加载?

    我有一个使用的网络表单验证码过滤掉机器人 该表格有一个
  • 无法在单元测试中模拟 HttpClient PostAsync()

    我正在使用 xUnit 和 Moq 编写测试用例 我试图模拟 HttpClient 的 PostAsync 但出现错误 下面是用于模拟的代码 public TestADLS Operations var mockClient new Moc
  • 在weblogic上升级jax-rs共享库

    通常weblogic 12c不支持jax rs 2 0 但是通过weblogic本身附带的jax rs共享库的帮助 可以将jax rs版本从1 1升级到2 0 问题是库实现是 jersey 2 5 它不能满足我的需求 我在 weblogic
  • 如何使用Apple的handleQuit方法?

    我制作了一个将数据保存到 data 文件的 java 应用程序 我有一个窗口监听器 它监听应用程序关闭 以便触发代码将数据保存到文件中 当按下我的专用退出按钮或按下窗口上的红色 X 时 一切都很好 然而 当用户选择命令 q 路线时 事情就会
  • 为 python GUI 应用程序授予 root 权限以在 ubuntu 中运行命令

    现在 我有一个 python GUI 应用程序 需要使用 sudo 权限运行命令 如下所示 import commands iStat askpassPath commands getstatusoutput which ssh askpa
  • 处理滚动条和 jquery .width() 方法

    jQuery 的 width 方法似乎没有考虑滚动条 这对我来说是有问题的 因为我想将一些子项的宽度设置为等于其父项的宽度 我使用类似于以下的 jQuery contentDiv width containerDiv width 在这个例子
  • 只是想从 Java Applet 将数据写入串行端口?

    几天来我一直在抓狂地想弄清楚为什么这似乎永远不起作用 首先 这是我的配置 Windows 7 x64JDK 7 x86JRE 7 x86火狐 x86由 Thin 提供服务的 Rails 3Java 设置使得 下一代插件 不处于活动状态 但它
  • Play 2.3.x 可以在没有 Activator(并且使用 maven)的情况下使用吗?

    我这里有两个相关的问题 在 Play 2 2 x 中 发行版捆绑为 zip 文件 可通过 Maven 存储库下载http downloads typesafe com play 2 2 x play 2 2 x zip http downl
  • 未找到 void com.unity3d.player.UnityPlayer.nativeRestartActivityIndi​​cator() 的实现

    我是 Unity 新手 我正在尝试将 Unity 游戏 它有 ARcore 集成到本机 Android 应用程序中 我可以在新的 HelloWorld 应用程序中启动 unity 但无法在我的真实应用程序 具有其他模块 中启动 注意 当我从
  • 使用 Sinon 测试 D3 中的鼠标悬停事件

    我在试图通过测试时遇到了麻烦 我希望能够使用间谍来检查鼠标悬停事件是否被正确调用 目前 我收到以下错误 错误 预计已被调用至少一次但从未被调用 我的部分困惑与 d3 和 jQuery 选择器之间的差异有关 我非常乐意使用后者 但我不确定如何
  • 正则表达式限制字符串大小

    如何限制此正则表达式的字符串大小 a z a z0 9 a z0 9 我只需要添加量词 3 16 撒上一些积极的前瞻 http www regular expressions info lookaround html通过添加来测试字符串的总
  • 令人困惑的苹果应用内购买产品

    我正在创建一个笔记应用程序 例如 iPad 版 Evernote 我决定提供一些应用内购买计划有两个原因 解锁应用程序中的更多功能 应在指定时间段后自动更新 现在我很困惑为此选择哪种类型的应用内购买 我对感兴趣自动续订订阅 访问指南后her
  • SqlCommand.Cancel() 会导致性能提升吗?

    我已经看到它出现在代码中的多个位置 从来没有解释 只是在其上方有一个神秘的注释 包含声明和执行以了解上下文 这只是运行 SqlCommand 的标准过程 SqlCommand cmd new SqlCommand cmd ExecuteRe
  • Swift where 条件检查属性是否已实现

    我刚刚找到了另一种在 Swift 中充分利用协议和协议扩展的方法 即扩展可选协议来添加函数 以便我可以提供默认值 我在这里写了一篇关于此的博客文章 https janthielemann de random stuff providing
  • 获取 DbContext 中当前登录的用户

    出于审计目的 我尝试在 DbContext 中获取当前登录的用户 不过我对此有一些问题 需要考虑以下几点 在 Blazor Server 中我们必须使用 AddDbContextFactory IHttpContextAccessor 在部
  • 如何使用 PHP 从文档中获取数字签名

    我对数字签名这个东西很陌生 我想做的是检查文档是否经过数字签名 如果已签名 则验证签名 我已经搜索了很多 我发现了一些有关验证签名 使用 openssl 的有用主题 但我找不到有关以下内容的任何内容 文档是否已签名 我还在stackover
  • 可以或应该同时运行的 Promise 数量是否有限制?

    令人惊讶的是 谷歌无法返回这个问题的结果 我想知道在排队并等待下一个完成之前可以或应该并行运行多少个承诺 我想这可能取决于用户的互联网 但我认为值得一问 如果它基于用户的 ISP 连接类型 是否有办法在启动队列之前测试发送的理想承诺数量 另
  • 增量数据库字段

    假设我在网站上有一篇文章 我想跟踪该文章的浏览量 在 Articles 表中 有 PK ID int Name nvarchar 50 和 ViewCount int 每次查看页面时 我都会增加 ViewCount 字段 我担心更新字段时发
  • 以编程方式获取 TFS 责任(注释)数据

    我正在尝试为 Team Foundation Server 2010 实现一个插件 该插件将创建有关团队项目中的用户的报告 从概念上讲 为了正确实现此插件 我需要访问与在 Visual Studio 中使用 注释 功能时获得的相同数据 我需