SVN优缺点

SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 迁移到 Subversion。说得简单一点 SVN 就是用于多个人共同开发同一个项目,共用资源的目的。

优缺点

  1. 存储类型格式

    CVS 是个基于 RCS 文件的版本控制系统。每个 CVS 文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改 RCS 文件。

    SVN 是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。

  2. 速度

    CVS 比较慢。整体而言,由于架构实现的不同, SVN 的确比 CVS 快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。

  3. 标志&分支

    SVN 采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。

    对分支而言:分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN 全文件编号补足了这个缺陷,SVN 里整个仓库都有版本号,但不是针对单个文件。

  4. 元数据

    CVS 只允许存储文件。SVN 允许一个文件有任意多的可命名属性,功能十分完全。

  5. 文件类型

    CVS 最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。

    SVN 会关心所有的文件类型,不需要你来手工操作。

  6. 回滚

    CVS 允许任意的回滚,在任意一个已递交的版本上,尽管这要花些时间(所有的文件都要分别处理)。

    SVN 不允许递交后回滚。建议把版本库里好的状态版本加到末尾,覆盖掉损坏的版本。而损坏的版本无论如何也是会存在数据库里的。(SVN 的滚回操作实际上是 merge 操作)

  7. 事务

    CVS 中的 “零或一” 事务原则根本没有实现。如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。作为一个潜规则,手工纠正这些并且对余下的文件 (而不是所有文件)一一重复检入。

    这样这些文件将在两阶段中被检入。SVN 的确支持 “零或一” 事务原则,这是 SVN 的一大优势。