【问题标题】:How to retrieve changesets associated with a build in TFS 2013 with Git?如何使用 Git 检索与 TFS 2013 中的构建相关的变更集?
【发布时间】:2014-10-30 13:43:42
【问题描述】:

一旦你有一个 IBuildDetail 来获取相关的变更集,通常是通过以下方式完成的:

buildDetail.Information.GetNodesByType("AssociatedChangeset")

但是,在带有 Git 的 TFS 2013 中,无法返回任何变更集。

可能我没有正确配置 TFS,但这是开箱即用的安装,而不是升级,所以我猜测新的 git 支持 API 已经改变。

任何帮助(或有用文档的链接)将不胜感激。

【问题讨论】:

    标签: git tfs


    【解决方案1】:

    经过一番折腾,我终于找到了解决方案。对于 TFS 2013 的 git 支持,变更集已重命名为 Commit。因此,当您获得这样的构建详细信息时,您需要询问该数据:

    var buildDetailSpec = _buildServer.CreateBuildDetailSpec(buildDefinitionUris);
    buildDetailSpec.InformationTypes = new[] { "AssociatedCommit" };
    

    然后你照常执行查询:

    var buildQueryResult = _buildServer.QueryBuilds(new [] { buildDetailSpec });
    var buildDetail = buildQueryResult[0].Builds;
    

    然后您检索 commit,而不是变更集,如下所示:

    var commits = buildDetail.Information.GetNodesByType("AssociatedCommit");
    var author = commits.First().Fields["Author"];
    var comments = commits.First().Fields["Message"];
    

    请注意,“Comment”已重命名为“Message”,“CheckedInBy”已重命名为“Author”(或者可能是“Committer”,它们对我来说始终是相同的值)。

    【讨论】:

    • 很高兴您发现了这一点。名称没有随意更改,这些反映了 Git 命名法。作者反映了进行代码更改的人,委员会将他们放入存储库的人。这些人通常(但不总是)是同一个人。
    【解决方案2】:

    对于那些有兴趣获取关联提交的当前构建列表的人(在调用上次良好构建后的关联提交之后),以下代码很有帮助。

    var envVar = context.GetExtension<IEnvironmentVariableExtension>();           
    var commits = envVar.GetEnvironmentVariable<IList<AssociatedCommit>>(context, WellKnownEnvironmentVariables.AssociatedCommits);
    

    当您返回类型安全对象时,这比当前构建的标记答案更好。

    【讨论】:

      【解决方案3】:

      我不是 tfs 专家,但我发现了这些链接,它们可能有用:

      How to get the History of the sourcecontrol in TFS API?

      http://tfsdeployer.codeplex.com/discussions/451215

      【讨论】:

      • 感谢您的回复。乍一看,第一个链接不会获得与构建关联的签入,第二个链接看起来类似于用于 TFS2012 的代码,但似乎也不再适用于 TFS2013+Git。但我会更深入地研究第二篇文章并确认。
      猜你喜欢
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多