2009-10-06 100 views
11

我一直在想一些分支策略(每個功能創建分支,可能每個開發者,因爲我們是一個小團體),並想知道是否有人遇到過任何問題。創建分支會佔用大量空間嗎?TFS分支和磁盤空間

回答

13

我上次看了一遍,TFS使用了copy-on-write,這意味着在更改文件之前不會增加磁盤空間。這有點像使用符號鏈接,直到你需要改變東西。

+1

+1:我的理解也是如此。該分支將在本地工作站上佔用空間,但是如果您不想看到該分支(基本上將其從工作區中刪除),則可以隱藏該分支並在完成併合並後修剪它。 – TrueWill 2009-10-06 17:39:41

+0

I找不到任何信息,所以如果有人遇到任何鏈接,請將我指向他們。 感謝您的回答。 – 2009-10-06 21:08:16

5

詹姆斯基本上是正確的。對於一個更完整的答案,我們需要在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)字段,因此每行都小得多。