差异
安全性
SVN:较差,定期备份,并且是整个SVN都得备份。Git:较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息。
权限管理
SVN:SVN的权限管理相当严格,可以按组、个人针对某个子目录的权限控制,每个目录下都会有个.SVN的隐藏文件。Git:Git没有严格的权限管理控制,只有账号角色划分。但Git可以通过分支合并时的审查策略来勉强绕过此问题。
仓储大小
SVN代码全记录在服务器中,Git每份仓库clone都拥有代码的全记录,意味着对于SVN而言,服务器的才是全的,你下载下来的可以小一点。而对于Git,你下下来的,和服务器上的是一样的。所以使用SVN,会减少各开发机的物理空间占用。不过这不一定意味着传输时间的减少,因为Git是自带压缩传输的,而SVN没有。
分支(branch)的使用范围不一样
Git中,你只能针对整个仓库作branch,而且一旦删除,便无法恢复。而SVN中,branch可以针对任何子目录,它本质上是一个拷贝操作。所以,可以建立非常多、层次性的branch,并且,在不需要时将其删除,而以后需要时只要checkout老的SVN版本就可以了。
局部更新,局部还原
SVN由于是在每个文件夹建立一个.svn文件夹来实现管理,所以可以很简单实现局部更新或者还原。假如你只希望更新某些部分,则SVN可以很好实现。同时代码写错了,同时可以很好实现局部还原,当然Git也可以通过历史版本还原,但是无法简单地实现局部还原。
对比可以看出:分布式版本管理仅仅是增加了本地库这个概念,其余的概念与集中管理并无区别。SVN在与服务器同步之前无法提交代码,因而本地修改更容易出问题。
SVN与Git的区别
- Git是分布式的,而SVN是集中式的;
- Git把内容按元数据方式存储,而SVN是按文件:因为Git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等;
- Git分支和SVN的分支不同:SVN会发生分支遗漏的情况,而Git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件;
- Git没有一个全局的版本号,而SVN有;
- Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
SVN的优点
- 采用集中式,易于管理,保证安全性;
- 管理方便,逻辑明确,理念符合常规思维;
- 代码的一致性高;
- 适合人数不多的项目开发;
- 允许一个文件有任意多的可命名属性,会关注所有的文件类型;
- 支持二进制文件,更容易处理大文件;
- 支持空目录。
SVN的缺点
- 服务器压力太大,数据库容量暴增;
- 必须连接在服务器上(时刻都得联网操作),否则基本不能工作、提交、对比、还原等;
- 不适合开源开发。
Git的优点
- 适合分布式开发,强调个体;
- 公共的服务器压力和数量都不会太大;
- 速度快,成熟的架构,开发灵活;
- 任意两个开发者之间可以很容易的解决冲突;
- 离线工作,管理代码成本低,不需要依赖服务器;
- 部署方便,基本上下个命令就可以用;
- 良好的分支机制,可以让主干代码保持干净。
Git的缺点
- 学习成本比较大,学习周期比较长,要求人员素质比较高;
- 不符合常规思维;
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
扫码关注公众号,查看更多精彩内容
标签:SVN,Git,代码,版本,服务器,对比,分支 From: https://www.cnblogs.com/bobbycheng/p/18095106