13

当使用分支方法在 TFS 中对代码进行分支时,代码是物理分支还是逻辑分支?从逻辑上讲,我的意思是它只是一个变更集(更改的增量)还是所有文件都被复制了?

4

2 回答 2

25

分支文件不会在 TFS 数据库中复制。在修改分支版本之前,不会创建文件的新版本。这就是为什么在一个大型项目上创建一个分支不会永远持续下去的原因。

来源:

http://www.codeplex.com/BranchingGuidance/Wiki/View.aspx?title=Isolation%20for%20Collaboration&referringTitle=Home

分支下的第四段解释说它不会创建相同文件的单独副本:

创建分支使用的额外存储空间非常少。无论文件夹中包含多少不同的文件,服务器都只保留一份相同内容的副本,从而最大限度地减少所需的存储空间。因此,如果您有 100 个 1 MB 文件的副本并且所有文件都相同,则服务器将仅存储 1 MB,而不是 100 MB。当您创建新分支并提交时,新分支中与源分支中的文件相同的所有文件都指向相同的内容。结果是分支消耗的额外存储空间非常少,并且仅当分支文件与源文件不同时,存储空间才会扩展。即使文件发生更改,Team Foundation Server 也会使用差异引擎来分析文件之间的更改并再次优化存储空间。

Microsoft 分支指南 PDF:

http://geeks.netindonesia.net/downloads/etc/TFS-Branching.pdf

于 2009-02-11T15:32:07.597 回答
3

简短的回答:分支是逻辑存储的,不是父级的直接副本。

长答案:VS ALM Ranger 的 Bill Heys 写了一篇详细的博客文章,描述了分支和文件历史记录如何存储在 TFS 中。

http://blogs.msdn.com/b/billheys/archive/2011/05/05/how-tfs-stores-files-and-calculated-deltas-on-versioned-files.aspx

于 2012-06-19T18:10:03.693 回答