原创作品,转载请注明出处。
※简述※
Subversion是近期在开源社区中非常流行的一款版本控制软件,它是CVS的替代产物。
它的主要特征有:
- CVS大部分的功能。
- 支持“目录”级别的版本管理,并且解决了CVS中迟迟未能解决的文件重命名和移动等问题。甚至对文件或文件夹的属性都提供了版本管理。
- “提交(commit)”实现了真正意义上的原子操作。也就是类似数据库中的事务的功能。
- 版本号依据每次提交而改变,不再针对每个文件。日志信息也是针对每次提交而设置。所以看到版本号是几百或者几千也不用太惊讶,表示方式不一样罢了。
- 通过WebDAV/DeltaV协议,可以与Apache的网络服务无缝衔接(通过Apache来运行)。这样就能提供一些额外的功能,例如:认证,压缩传输,以及数据仓库(Repository,见下)的浏览等。
- 也可以作为独立服务器运行,但这样的话提供的功能较为简单薄弱。
- 两种运行模式都支持SSH(当然需要各自的支持和配置)
- 降低了分支(Branch)和标签(tag)上的时间消耗。底层设计理念和实现上的不同,不细说了。
- 时间消耗依据的是文件改变部分的大小,而不是数据总量。
- 创建数据仓库时,用户可以指定是使用内嵌的 BerkeleyDB 数据库,还是特定格式的文件系统。
其他还有些零星的小功能,具体可以参阅: http://subversion.tigris.org/roadmap.html
这里解释一下 数据仓库 的概念:
一个数据仓库对应的可以是一个项目,也可以是多个项目。SVN是基于数据仓库进行管理的。
按照用户习惯,可以只在每个数据仓库内仅放置一个项目的内容。