那git存储系统怎么样?

时间:2011-10-10 14:44:47

标签: git svn data-storage

也许这是一个愚蠢的问题,但我想在这里提出,因为我不清楚:git提交文件内容作为相对于svn提交的快照作为增量存储系统,是否意味着git需要比svn更多的磁盘空间?个人认为它应该是合理的三角洲。

2 个答案:

答案 0 :(得分:2)

实际上,鉴于git对每个对象使用zlib转换,事实证明git比svn更有效:例如,Ruby on Rails Git存储库下载,其中包括 该项目的完整历史,目前约为13M,远远低于单项结账项目的规模,约为9M。 Ruby on Rails的svn服务器存储库(即整个历史记录)大约是115M。

答案 1 :(得分:1)

逻辑上,git自己将每个文件(实际上是每个对象)存储在存储库中,并通过SHA1识别它们。您可以自己查看,对象位于.git/objects中由SHA1的前两个字符标识的目录中。

但是git还支持在所谓的packfile中存储(和传输)对象。此文件包含使用zlib压缩的对象。但它也可以包含delta压缩对象,它引用同一packfile中的另一个对象(它不必是同一文件的先前版本)。

当您调用git gc时,保存为普通文件的对象将被压缩为packfile。这也会在一些可能产生“松散物体”的git操作中自动发生。

由于这一切,git工作目录通常小于SVN工作目录。考虑到git working dir包含了repo的所有历史记录,这很棒。 (SVN工作目录通常大约是其中文件大小的两倍。这是因为它包含了每个文件的另一个副本,用于区分和提交。)