以前总结的:
1、目录版本控制
CVS 只能追踪单独档案的历史, 不过 Subversion 实作了一个 “虚拟” 的版本控管档案系统, 能够依时间追踪整个目录的更动. 目录和档案都被纳入版本控管. 最后, 客户端有真正可用的 move (移动) 与 copy 指令.

2、不可分割的送交
一个送交动作, 不是导致所有更动都送入档案库, 就是完全不会送入. 这让发展人员以逻辑区段建立更动, 并送交更动.

3、纳入版本控管的描述数据 (Meta-data)
每一个档案与目录都附有一组隐形 “性质 (property)”. 你可以自己发明, 并储存任何你想要的键值对. 性质是随着时间来作版本控管的, 就像档案内容一样.

4、选择不同的网络层
Subversion 有抽象的档案库存取概念, 可以让人很容易地实作新的网络机制. Subversion “先进” 的网络服务器, 是 Apache 网页服务器的一个模块,它以称为 WebDAV/DeltaV 的 HTTP 变体协议与外界沟通. 这对Subversion 的稳定性与互通性有很大的帮助, 而且额外提供了许多重要功能: 举例来说, 有身份认证, 授权, 在线压缩, 以及档案库浏览. 另外也有小而独立的 Subversion 服务器程序, 使用的是自订的通讯协议, 可以很容易地透过 ssh 以 tunnel 方式使用.

5、一致的数据处理方式
Subversion 使用二进制差异运算法, 来表示档案的差异, 它对文字 (人类可理解的) 与二进制档案 (人类无法理解) 两类的档案都一视同仁. 这两类的档案都同样地以压缩形态储存在档案库中, 而且档案差异是以两个方向在网络上传送的.

6、Hackability
Subversion 没有任何的历史包袱; 它主要是一群共享的 C 链接库, 具有定
义完善的 API. 这使得 Subversion 便于维护, 并且可被其它应用程序与程
序语言使用.
-----------------------------------

http://www.21ido.com/blog/post/279.html
特性 
    * 目录版本化 
      CVS只能管理单个文件的更改,而Subversion可以跟踪到目录树的变更
    * 真实的版本历史 
      CVS无法实现文件移动改名操作,所以但一个文件搬到另一个地方或者改名,版本号将重新编,而Subversion可以实现移动、改名等操作
    * 原子提交 
      将一系列文件的修改组成一个逻辑整体,以后可以一次性还原
    * 版本号元数据 
      Subversion不仅能管理文件内容,也能管理文件和目录属性(meta-data)
    * 可选的网络层 
      Subversion可以作为扩展模块嵌入Apache,自身还实现了一个轻型独立的服务器软件
    * 一致的数据操作 
      Subversion用了二进制差异算法描述文件的变化,所以对于文本文件和二进制文件,操作方法是一样的
    * 高效的分支和标签操作

      Subversion使用一种类似硬链接(Unix名词)的机制拷贝整个工程来对分支和标签进行操作,消耗的时间跟修改部分成正比,而不是整个文件的大小,因此这些操作的开销很小,花费时间很少
    * 可扩展性 
      Subversion由一系列结构化的模块组成,具有定义良好的API,使得和其它语言互动操作性很强,而且非常方便维护
    * 可以选择数据库和纯文件的版本库实现

      版本库可以使用嵌入的数据库((DBD,Berkeley database),也可以使用定义格式的纯文件(FSFS,Native filesystem)
    * 对象链接的版本化

      Unix用户可以在版本控制里置入对象链接,这个链接会在Unix的工作拷贝里重建,但不会在win32工作拷贝里创建。
    * 可解析的输出

      Subversion所有的命令行客户端输出的内容都经过精心的设计,适合人们读取和自动解析;脚本化也具备较高的优先级。
    * 本地化信息

      Subversion会根据本地设置使用gettext()来显示传输错误、报告和帮助信息。
posted on 2009-09-30 16:03  sky100  阅读(450)  评论(0编辑  收藏  举报