2011-10-11 96 views
8

目前,我們正在使用Subversion作爲我們的源代碼庫。我們正在轉換到Git的規劃階段。我們的Subversion版本庫目前是19Gb。 Git倉庫如何與磁盤空間要求的Subversion進行比較?我的19Gb svn倉庫將在Git存儲庫中轉換成什麼?Git vs SVN需要多少空間?

+2

只有知道肯定的方法:進行轉換,然後親自查看。 –

+0

另一個要考慮的是每個Git的客戶端還存儲整個回購,但是SVN每個客戶只存儲最新版本。因此,您的總體Git空間要求是整個回購大小x客戶端數量+ 1(服務器)。 – malhal

回答

16

很難猜,你的Git倉庫會接受,因爲它取決於幾個因素的確切大小,比如

  • 類型的存儲對象
  • 多家分支機構,標籤
  • 一些類似的/重複的對象

Git有一個很好的壓縮算法,根據我以往的經驗,它能夠將SVN信息庫的大小減少10倍。 Here's some examples

然而,最好的辦法就是自己嘗試一下。在本地計算機可以SVN倉庫轉換爲Git的

$ git-svn clone -s http://path/to/subversion reponame 

然後運行git gc,看看你需要多少空間啓動。

0

正如吉特保持每臺機器的整體回購,它還存儲的全部歷史,如果你有添加,然後被刪除一個大的文件,你會發現,實際上磁盤空間沒有減少。如果您完全確定要永久刪除文件,則需要在git中運行特殊命令。

git filter-branch -f --index-filter 'git rm -r --cached --ignore-unmatch "filename"' --prune-empty HEAD 
rm -rf .git/refs/original/ && git reflog expire --expire=now --all && git gc --aggressive --prune=now 

今天我提出我的svn回購的一個使用Git的SVN命令,它可以讓你移動不僅是當前的數據,而且歷史的git。這就是我所擁有的。

在我的電腦目前的svn的大小爲1.27 GB,新創建的混帳回購協議是3.24 GB。這是因爲git repo包含整個歷史記錄,刪除的文件在git中實際上並未被刪除,除非您像上面提到的那樣明確地執行它。 如果您在轉移到git時發現任何問題,您可能會尋找答案here