Git vs SVN需要多少空间?

时间:2011-10-11 14:37:23

标签: git svn

我们目前正在使用Subversion作为源代码存储库。我们正处于转换为Git的计划阶段。我们的Subversion存储库目前是19Gb。 Git存储库与Subversion的磁盘空间要求相比如何?我的19Gb svn存储库将在Git存储库中转换为什么。

2 个答案:

答案 0 :(得分:17)

很难猜出Git存储库的确切大小,因为它取决于几个因素,例如

  • 存储对象的类型
  • 分支机构数量,标签
  • 相似/重复对象的数量

Git有一个很好的压缩算法,根据我过去的经验,它能够将SVN存储库的大小减少10倍。 Here's some examples

然而,最好的方法是亲自尝试。在本地计算机上,您可以将SVN存储库转换为Git

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

然后运行git gc,看看你需要多少空间。

答案 1 :(得分:1)

由于git会在每台计算机上保留整个存储库,因此它还会存储完整的历史记录,如果您已添加然后删除了一个大文件,您会注意到实际上磁盘空间没有减少。如果您完全确定要永久删除文件,则需要在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

今天我使用git svn命令将我的一个svn repos移动到git,这使您不仅可以移动当前数据,还可以移动历史记录。这就是我所拥有的。

我电脑上的当前svn repo大小是1.27 GB,新创建的git repo是3.24 GB。这是因为git repo包含整个历史记录,删除的文件实际上并没有在git中删除,直到你像我上面提到的那样明确地执行它。 如果您在转到git时发现任何问题,可以查找答案here