使用构建

时间:2015-06-24 15:42:02

标签: tfs build-automation tfs-workitem changeset

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

例如:我签入变更集,但是我犯了一个错误,并将其与错误的工作项链接。在我注意到这一点之前,我创建了一个发布版本,它将变更集和工作项关联起来并自动生成更改日志。现在错误的工作项与构建关联。为了解决我的错误,我删除了工作项和变更集之间的链接。 但是,我完成的构建和工作项之间仍然存在链接。有没有办法通过用户界面删除链接,或者我必须深入了解TFS API?

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

1 个答案:

答案 0 :(得分:2)

在做了一些研究后,我偶然发现了这篇文章(https://social.msdn.microsoft.com/Forums/en-US/76462cd5-070f-4fba-8206-550b5511ae68),其中有人有类似的问题。我还检查了http://www.woodwardweb.com/tfs_top_tip/tfs_top_tip_15.html上引用的文章。

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

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

无法找到的标签名称正是由已删除的构建创建的标签名称。 TFS很遗憾地记得以前的标签。

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

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