如何删除TFS 2010中的特定ChangeSet?

时间:2013-12-26 12:12:50

标签: c# tfs tfs2010 tfs2012 tfsbuild

如何删除tfs2010中的特定变更集?

我有变更集版本号545,544,543,542。

现在,我希望仅在tfs中删除特定的变更集543?

3 个答案:

答案 0 :(得分:14)

您必须回滚更改集,您无法删除变更集。 (Rollback Command

在您的情况下,简单的Rollback命令将是这样的:

TF rollback /changeset:C543

答案 1 :(得分:9)

您无法删除TFS中的变更集。即使你可以以某种方式,(我认为你可以对TFS数据库运行sql查询来做到这一点)这不是一个好习惯。如果人们开始删除变更集/历史记录,则版本控制的全部目的将被取消。我认为很少有其他源代码控制允许这样做,但我不建议这样做。这是一个不好的做法。

此外,如果您使用TFS的其他功能,例如Workitems/Test Cases等,则变更集会链接到它,因此如果它们被删除,链接将变为孤儿(我认为)。

正如Arin所说,你可以做的最接近的事情是使用Rollback命令,但是当你这样做时,你必须在回滚后签入代码,所以基本上你会看到旧的changset和新的changset(回滚)历史。

答案 2 :(得分:5)

免责声明 - 你永远不应该,永远不要这样做。不要考虑它!

背景 - 我正在尝试进行部分TFS迁移,并使用" TFS集成"进行最恶劣的时间。工具。最近它将一系列错误的变更集转储到我的目标TFS中。我没有擦掉所有内容并从头开始,而是围绕着TFS数据库,并提出了以下内容(在TFS 2013上,我认为TFS 2010或多或少类似):

declare @ChangeSetId int = 5735

-- Delete the actual file content first
delete from tbl_Content where ResourceId in (select ResourceId from tbl_File where FileId in (select FileId from  tbl_Version where VersionFrom = @ChangeSetId))
-- Remove the file
delete from tbl_File where FileId in (select FileId from  tbl_Version where VersionFrom = @ChangeSetId)
-- Purge the version
delete from tbl_Version where VersionFrom = @ChangeSetId
-- Destroy the changeset
delete from tbl_ChangeSet where ChangeSetId = @ChangeSetId

这样做是不明智的。它不受Microsoft支持。不要在现场制作环境中使用它!请改用回滚!但是,如果您迫切希望消除变更集,可以试试这个。但不要告诉我你没有被警告过。