将变更集和工作项与构建重新关联

Re-associate changesets and work items with build

有没有办法从 Team Foundation Server 上完成的构建中手动删除关联的变更集和工作项?

例如:我签入了一个变更集,但我犯了一个错误,我 link 它使用了错误的工作项。在我注意到之前,我创建了一个发布版本,它关联变更集和工作项并自动生成变更日志。现在错误的工作项与构建相关联。为了纠正我的错误,我删除了工作项和变更集之间的 link。 但是,在我完成的构建和工作项之间仍然存在 link。有什么方法可以通过用户界面删除 link,或者我必须深入研究 TFS API?

我尝试删除已完成的构建并开始一个新构建,但是与已删除构建关联的工作项和变更集与新构建没有关联(即使我删除了之前的构建)。有谁知道如何强制 TFS 将工作项和变更集与新构建相关联?

经过一些研究,我偶然发现了这篇文章 (https://social.msdn.microsoft.com/Forums/en-US/76462cd5-070f-4fba-8206-550b5511ae68) where someone had similar problem. I have also checked the referenced article on http://www.woodwardweb.com/tfs_top_tip/tfs_top_tip_15.html

删除最后一个构建后,我还检查了构建的诊断输出,并在日志中找到了这一行:

Warning: Cannot find the last label 'XXXXXXXXXXXXXXXXXXXX': no changesets will be associated with the build.

而找不到的标签名称正是被删除的构建创建的标签名称。 TFS 显然在某处记得以前的标签。

我检查了 TFS 收集数据库,瞧,这是解决方案:

  1. 删除最后几个构建(并检查这些构建的标签是否已删除)。
  2. 连接到 TFS 收集数据库。
  3. 打开tabletbl_BuildDefinition
  4. LastBuildUriLastGoodBuildUriLastGoodBuildLabel 中找到要为其重新关联变更集和更改值的构建定义,其中:
    • LastGoodBuildLabel 是实际标签,它将成为将变更集和工作项与构建相关联的新基线,
    • LastGoodBuildUri 是创建源代码历史记录中最后一个标签的构建 ID(您可以在构建历史记录中找到它)
    • LastBuildUri 是最后一个 运行 构建的 ID(与 LastGoodBuildUri 相同)
  5. 运行 构建。与已删除构建关联的工作项和变更集将与新构建重新关联。