TFS分支和磁盘空间

问题描述:

我一直在想一些分支策略(每个功能创建分支,可能每个开发者,因为我们是一个小团体),并想知道是否有人遇到过任何问题。创建分支会占用大量空间吗?TFS分支和磁盘空间

我上次看了一遍,TFS使用了copy-on-write,这意味着在更改文件之前不会增加磁盘空间。这有点像使用符号链接,直到你需要改变东西。

+1

+1:我的理解也是如此。该分支将在本地工作站上占用空间,但是如果您不想看到该分支(基本上将其从工作区中删除),则可以隐藏该分支并在完成并合并后修剪它。 – TrueWill 2009-10-06 17:39:41

+0

I找不到任何信息,所以如果有人遇到任何链接,请将我指向他们。 感谢您的回答。 – 2009-10-06 21:08:16

詹姆斯基本上是正确的。对于一个更完整的答案,我们需要在2006年开始从后巴克的帖子:http://blogs.msdn.com/buckh/archive/2006/02/22/tfs_size_estimation.aspx

在本地版本表中的每个新行增加了约520个字节(一行被添加了对获取新添加的每个工作区项目,并且大小由本地路径列支配)。如果您有100个工作空间可以获取新添加的项目,那么数据库将增长52 KB。如果您添加1,000个平均大小的新文件(混合源文件,二进制文件,图像等)并且有100个工作空间获取它们,版本控制数据库将增长大约112 MB(60 KB * 1,000 + 520 * 1,000 * 100) 。

由于分支项目不重复文件内容,我们可以省略60KB图。 (它不完全是“写入时拷贝”,詹姆斯 - 在分支操作本身期间必须计算和存储O(N)个元数据,而对于像我认为在O(1)中分支的git这样的系统,你是正确的,新项目指向tbl_Content中与源项目相同的记录,直到它被编辑)。这使我们只有520 * num_workspaces * files_per_workspace因素。在MS dogfood服务器上,tbl_LocalVersion中有20亿行,但是在一个自描述的小组中,它应该完全忽略不计。

Something Buck的博客没有提到合并历史。如果您采用分支机构繁重的工作流程并坚持几个开发周期,那么tbl_MergeHistory可能会增长到与tbl_LocalVersion几乎一样大。再次,我怀疑它甚至会注册在一个小团队的雷达上,但是在大型设备上,您可以轻松地累积数亿行。也就是说,由于没有nvarchar(260)字段,因此每行都小得多。