为什么在 TFS 中删除文件然后重新创建它不会清除历史记录?

Why doesn't deleting a file in TFS and then recreating it wipe out the history?

出于各种原因,我想清除 TFS 中某个文件的历史记录。 (郑重声明,我确实意识到这是一件有争议的事情)。我尝试完全删除文件,检查删除情况,然后重新添加同名文件的 "fresh" 副本。然而,尽管已成功检查删除,重新创建的文件仍然具有旧文件的所有历史记录,如下所示:

我已经阅读了其他 Stack Overflow 帖子,例如 this one(以及其他几篇类似的帖子),讨论了使用 tf 效用。但是,我正在寻找一种从 UI 执行此操作的简单方法 - Visual Studio 本身或 TFS Web 界面。

我怎样才能做这样的事情?

您正在寻找 tf destroy。没有办法通过 UI.

Source Control Explorer Extension 将允许您在 UI 中启用销毁。

查看上下文菜单中的底部项目

由于您处理的是版本控制系统,删除本质上意味着从普通视图中隐藏文件,因为删除操作只是项目历史记录中的另一个步骤。因此,当您创建具有相同名称的文件时,您正在继续同一文件的历史记录。

正如其他人指出的那样,您可以使用 tf destroy 删除文件及其历史记录,从而为您提供一个干净的平台来创建 'new' 文件。

删除TFS中的文件夹实际上只会执行一次"soft delete"。该分支将仍然存在并包含其所有历史记录,只是它将隐藏。您可以按照此 tutorial.

在 VS 中显示已删除的项目

如果要从 Team Foundation 版本控制中永久删除版本控制文件,需要执行 tf destroy command

tf destroy [/keephistory] <itemspec1>[;<versionspec>][<itemspec2>...<itemspecN>] 
[/stopat:<versionspec>] [/preview] [/startcleanup] [/noprompt] [/silent] [/login:username,[password]] [/collection:TeamProjectCollectionUrl]]

没有任何内置按钮或UI 旨在快速销毁 TFS 中的文件。我们建议您使用一些 tf 命令行来实现这一点。

让事情变得复杂是为了防止用户意外破坏 files/folders。由于 tf destory 命令从 TFS 中永久删除文件。谨慎使用。没有恢复。

此外,即使您 不必 在 TFS 中销毁 file/folders 之前删除它。然而:

Before you run tf destroy without the /keephistory option, we recommend that you first delete the files you want to destroy.

After you delete the files you can synchronize the Team Foundation warehouse. Otherwise, the warehouse will not be synchronized with the destroyed items.

有关更多详细信息,请参阅 Delete Files and Folders from Version Control