【问题标题】:Location of changeset comments on a Team Foundation server?Team Foundation 服务器上变更集注释的位置?
【发布时间】:2013-10-08 17:32:52
【问题描述】:

我的一位同事正在编写一个持续集成构建脚本,该脚本在开发人员每次签入时都会生成一个新构建,并在构建完成时向开发团队发送一封电子邮件。我们希望获取与签入相关的任何 cmets(通过右键单击项目文件并选择查看历史记录可以看到相同的 cmets)并将它们包含在电子邮件中。但是,我们不确定在 TFS 后端的哪个位置指向脚本,以便它可以检索这些 cmets。有谁知道我们应该看哪里?

【问题讨论】:

  • 你们没有部署 TFS Build 服务器部件吗?

标签: tfs continuous-integration tfsbuild


【解决方案1】:

您是否为此使用 TFS API?如果是这样,您只需这样做:

TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("http://WhateverServerUrl");
IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
VersionControlServer VsServer = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
IBuildDetail build = buildServer.GetAllBuildDetails(new Uri("http://WhateverBuildUrl"));

List<IChangesetSummary> associatedChangesets = InformationNodeConverters.GetAssociatedChangesets(build);

foreach (IChangesetSummary changeSetData in associatedChangesets)
{
    Changeset changeSet = VsServer.GetChangeset(changeSetData.ChangesetId);
    string x = changeSet.Comment;
} 

如果您尝试在数据库中查找它,可以查看变更集标题:

USE tfs_warehouse
SELECT [ChangesetID]
      ,[ChangesetTitle]
  FROM [tfs_warehouse].[dbo].[DimChangeset]

从这里向 id、日期等添加 where 子句。

这是数据在 TFS 2010 中的存储位置。

在 TFS 2008 中,您将使用 TfsWarehouse 并查看 dbo.ChangeSet Changset 列。

【讨论】:

  • 我们正在使用 MS Build 脚本,所以我不确定我们是否可以以这种方式使用 API。你知道这是否可能吗?
  • 只需添加一个自定义任务。在使用 Microsoft.TeamFoundation.Client、Microsoft.TeamFoundation.VersionControl.Client、Microsoft.TeamFoundation.Build.Client 并编写该代码的自定义任务参考中,应该这样做。
  • 如果您在编写自定义任务时需要帮助,您可以通过谷歌搜索并找到一些示例,但实际上您只是创建一个项目并进行构建。将该自定义任务中的 dll 和引用获取到您的 MSBuild 脚本中。您的项目当然可以像任何其他项目一样引用上述程序集。
猜你喜欢
  • 2011-11-23
  • 2014-04-21
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多