从全球列表中清除历史版本

时间:2012-02-19 15:27:30

标签: tfs tfs2010 continuous-integration agile alm

从全局列表中清除未使用或旧版本的最佳做法是什么?

目前,每个CI构建都会将其标签附加到“构建”列表中。随着时间的推移,列表会变得臃肿,偶尔我们会从列表中手动删除未使用的列表。

3 个答案:

答案 0 :(得分:3)

TFS全球列表确实变得臃肿,确实阻碍了性能。我们自己也有同样的问题。

我建议做以下事情:

  1. 更改工作项类型定义,以包含依赖于构建列表的全局列表的WIT字段的允许现有值规则(例如,Bugs中的“Found in Build”字段)
  2. 定期(手动或预定)删除旧版本。您可以查看每个构建定义的保留策略。删除不保留的构建是安全的(默认情况下,每个定义最后10个)。我建议自动执行此操作并查询TFS数据库以确保可以安全删除哪些构建。
  3. 或者,您可以查看构建的放置位置并解析目录结果(即保留存储在那里的构建)。

答案 1 :(得分:1)

TFS将这些标签附加到全局列表,以便工作项可以链接到特定的构建。从理论上讲,您不应该从全局列表中“清理”构建列表,因为您将使用这些列表项作为值处于无效状态的任何工作项。

还有其他列表会随着时间的推移而膨胀,例如“分配给”用户列表。任何曾经是该团队项目的有效用户的人都会出现在该列表中,原因与上述相同。如果删除用户,则会使该用户的工作项处于无效状态。当您尝试将变更集与无效工作项关联或对其执行其他操作时,您将收到错误。

长项列表不应该存在任何性能问题。在下拉列表中从一个巨大的列表中选择会很烦人......但这就是TFS野兽的本质。它可以保存各种信息,因此您可以随时间推移指标。

查看Tfs_Analysis多维数据集或构建的事务表。您将找到您运行的每个构建的数据行。 (删除构建时,TFS 2008从其事务表中删除了行...在TFS 2010中,数据被保留,并且数据库中设置了“IsDeleted”标志,因此数据永远保留在那里)

答案 2 :(得分:1)

我不知道如何刷新旧版本 - 我们还有一个无用的膨胀列表,其中包含数百个已删除的版本,这些版本会使“找不到”的字段无法使用。

但是,对于CI构建,可以减轻大部分构建,因为您可能不需要/需要标签。可以编辑每个构建定义,以在构建开始时停止标记源代码控制。 (我现在无法提供完整的说明,因为我现在离开了我的电脑)