一、SVN简介
SVN(全称:Subversion),是一个开放源代码的版本控制系统(目前是Apache基金会项目下的一个开放源代码的版本控制软件系统),对于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。
互联网上很多版本控制工具已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
通俗的来说,SVN是一个开源的版本控制系统。和VSS相比,除了最基本的代码和文件管理功能外,主要的变化是提供了分支的功能,从而解决了VSS文件独占的问题。大幅提升了开发人员的工作效率,任何人写完代码,随时可以提交到自己的分支上,最后对所有分支进行合并,解决冲突即可。相比VSS而言,在工作模式上有了翻天覆地的改变。
二、SVN优点
- 管理方便,逻辑明确,操作简单,上手快:集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手
- 易于管理,集中式服务器更能保证安全性,在服务端统一控制好访问权限,利用代码的安全管理
- 所有的代码已服务端为准,代码一致性非常高
- 有良好的目录级权限控制系统
三、SVN缺点
- 对服务器性能要求高(所有操作都需要通过服务端进行同步,这会导致服务器性能要求比较高。如果服务器宕机了就无法提交代码了),数据库容量经常暴增,体量大
- 必须联网。如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等;如果在内网还好,网速比较稳定,同步相对比较快,如果是通过外网同步,有可能就需要同步很久
- 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。然而一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题
- 分支的管控方式不灵活:svn分支是一个完整的目录,且这个目录拥有完整的实际文件,这些操作都是在服务端进行同步的,不是本地化操作,如果要删除分之,也是需要将远程的分支进行删除,这会导致大家都得同步
- 速度没有git快,如果有五个分支,是把五个分支的文件全部拷下来