49

我将 Visual Studio 2012 与 Microsoft TFS 2012 一起使用。

在我的c:驱动器上创建的工作区中,创建了一个隐藏文件夹$tf。我怀疑 TFS 创建了这个文件夹。它潜伏着磁盘空间,因为当前大小现在是几 GB,并且它大约是整个工作空间所需的 GB 总量的 25% 磁盘空间。所以这个隐藏$tf文件夹非常大。

结构是这样的:

c:\workspace\$tf\0\{many files with guid in filename}.gz
c:\workspace\$tf\1\{many files with guid in filename}.gz

有谁知道我是否可以$tf安全地删除此文件夹,或者是否绝对有必要跟踪工作空间内的更改?

4

3 回答 3

64

TFS 保留工作空间中所有文件的哈希和一些附加信息,以便它可以对本地工作空间进行更改跟踪并快速检测文件中的更改。它还包含文件的压缩基线。二进制文件和已经压缩的文件会占用相当多的空间。简单.cs文件应保持非常小(取决于您的 FAT/NTFS 群集大小)。

如果你想摆脱这些,那么将 Workspace 类型设置为server workspace但失去了 local workspaces 的优势

删除这些文件只是暂时的,因为一旦您执行 Get 操作,TFS 就会强制重新创建它们。

您可以通过执行以下操作来减小此文件夹的大小:

  • 创建小型的、有针对性的工作区(只获取您需要进行更改的项目)
  • 隐藏文件夹,排除包含您不需要的项目的文件夹。尤其是包含大量大型二进制文件的文件夹
  • 将您的依赖项放在 NuGet 包中,而不是将它们检入源代码控制中。
  • 将您的 TFS 工作区放在具有较小 NTFS/FAT 群集大小的驱动器上(如果您只有 1KB 的文件,64Kb 的群集大小将严重扩大所需的磁盘空间量。

要设置服务器工作区,请更改隐藏在高级工作区设置部分中的设置: 在此处输入图像描述

于 2014-05-23T09:17:59.060 回答
8

简单的答案:我删除了 $tf 文件一次:最终结果是新添加的文件出现在我的挂起更改中,但是当我更改现有文件时,更改没有出现在我的挂起更改中。所以我不建议删除这个文件夹。

于 2014-10-31T15:46:41.900 回答
2

要回答最初的问题,答案是肯定的。但是,为了让 TFS 跟踪更改,需要重新创建它,尽管文件夹更少且磁盘空间更小。要做到这一点:

  1. 首先删除当前工作区文件夹中的所有 tf​​$ 文件夹。
  2. 接下来,将原始文件夹的所有剩余内容移动到另一个空文件夹,最好是另一个驱动器上的一个;
  3. 在原始(现在为空)工作区文件夹中执行“获取最新”(这将导致在该原始文件夹中创建单个 tf$ 文件夹)。
  4. 现在将您移动到备份文件夹中的所有内容复制到原始工作区文件夹中“获取最新”结果的顶部。

通过按顺序执行这些步骤,您将获得 TFS 所需的 tf$ 条目,但在一个文件夹中并且更加紧凑 - 此外,您所做的任何未签入的更改的增量将被保留,并且 TFS将它们视为应有的未决更改。

我们的 Certitude AMULETs C++ 解决方案包含 72 个高级项目,我们必须每月执行一次,以保持合理的编译和搜索速度。

于 2016-12-18T19:26:26.403 回答