SVN和Git的真相与误解
网上有非常多的SVN和Git的比较,但是很多都是错误的,下面我们就来列举下那些常见的错误认识,以及svn和git的一些区别,他们有什么优缺点,以便让你更好的理解SVN和Git的当前真实情况,为你的团队挑选合适的工具。
Git仓库远比SVN仓库占用空间小
SVN和Git的差异算法虽然有很多地方的不同,但是最终他们的数据存储都是相同的。最终的情况就是,同样的文件,它们两个存储所占用的空间大小非常相近。
但是当存储的文件大多是二进制文件时(例如,图片、安装包等)SVN存储所占用的空间反而会比Git的小很多,这是因为SVN所使用的差异算法能同时应用到二进制文件和文本文件中
我们测试了WordPress的开源代码,分别使用SVN和Git存储,最终SVN的占用空间是186MB,Git的是169MB,相差只有17MB,具体数据
创建分支在SVN中非常的重
我们用 WordPress 的源码对SVN和Git创建分支进行了测试,SVN在创建分支后增长了1308字节的空间占用,Git增加了360字节的空间占用,创建时间上,SVN消耗了0.093秒,Git花费了0.031秒。详细信息
SVN每个目录都会有一个.svn的隐藏目录
从1.7版本(在2011年发布)之后,已经变成了只会在根目录下存在.svn目录
没人再使用SVN了
SVN还有非常多的公司和团队在用,OPPO、网易、Google等各类互联网大公司都在使用。因为SVN拥有Git无法替代的优势:文件级权限控制
对于公司和团队来说,代码的安全尤其重要,要针对不同职位的人员设置代码的可见范围,SVN的文件级权限控制完美的符合了公司的安全性要求,所以对于看重数据安全的公司来说,SVN是唯一的选择。
Git则是开源项目使用的更多,因为它在每个人的电脑上都存在一份完整的仓库代码,导致无法进行权限控制,也无法像SVN那样只检出部分目录的代码。
分布式的 Git 比集中式的 SVN 更优越
分布式只是实现版本控制的另外一种方法。集中式和分布式都有他们的优缺点,我们应该根据实际情况来判断使用哪个更好。
分布式的缺点:没有权限控制;每个人都需要完全 clone 整个仓库,没法像 SVN 可以只 checkout 需要的子目录;没法锁定文件等等问题
Git 更适合大项目
实际上Git并不适合用来存储大的项目,因为Git需要每个人都clone完整的仓库到自己电脑,2G的代码或许没什么问题,但是如果仓库到了10几G,几百G后,这会是一个非常大的问题。通常这就需要把一个大的仓库才分为多个小的仓库了。但是这就导致了其他几个问题:你需要管理多个仓库;破坏了原有项目的完整性;没法继续跟他们一起使用分支;
相反,SVN则没有仓库大小的限制和担心,因为我们可以按需只检出需要的目录。例如Apache的所有项目都是存储在一个仓库里,这完全没有问题。
更多阅读:Google为什么存储百万行代码在一个仓库中