Subversion比CVS更好用
作者:顾宏军
来源:赛迪网-开放系统世界 长久以来,在开源世界中,CVS(Concurrent Versions System)一直都是版本控制的首选。但是现在用户有了另一个选择,就是Subversion。Subversion是下一代版本控制系统,能替代CVS,项目主页是http://subversion.tigris.org。 Subversion是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件, 其中包括程序源码。 它的初始目标很明确,实现绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够顺利迁移到Subversion上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记等。 安装与初始化 Subversion建立在一个可移殖的APR (Apache Portable Runtime,链接库)上。这使得Subversion可以工作在任何可以执行Apache的操作系统上。 Subversion有两种运行方式,一是可以作为Apache 2.0的一个模块, 以WebDAV/DeltaV协议与外界连通;另外,也可使用Subversion 自带的小型服务器程序。该程序使用的是自带的通讯协议, 可以很容易地透过SSH以tunnel方式使用。 最简单的安装Subversion的方法就是使用其提供的二进制版本(在项目网站上,有RPM、DEB和PORTS等格式的文件下载)。根据系统选择下载所需的文件,这里使用的Red Hat,所以选择了RPM格式。
设置环境变量,命令如下:#export EDITOR=vi 创建文件库,命令如下:#svnadmin create /opt/proj/fox 将目录doc的内容,直接导入至文件库的fox目录里,命令如下:#svn import /root/doc file:///opt/proj/fox Subversion组件 安装好之后,Subversion 会有数个不同的工具,主要分为客户端组件和服务器组件两类。 客户端组件供使用者使用,主要包括以下两个组件: svn 是命令行客户端程序,用来管理数据。 Svnversion 用来查看工作拷贝的混合版本状态。 服务器组件供管理员使用,包括以下几个组件: svnlook 用来查看Subversion的文件库的工具。 Svnadmin 用来创建与调整Subversion的文件库的工具。 mod_dav_svn 给Apache2.0网页服务器使用的模块;可以用来将用户的文件库透过网络对外开放。 Svnserve 一个独立的服务器程序,可以作为服务器进程执行,或是被SSH启动,让用户的文件库在网络上可供其它人存取的方法。 优势所在 Subversion在使用方式上与CVS相像,但是某些新的功能与设计和CVS是有区别的。下面谈谈两者的区别,让用户切实感受Subversion的优势。 不同的修订版号 在CVS中,每个文件修订版号是不同的。这是因为CVS基于RCS。每一个文件在文件库都有对应的RCS文件,而文件库的结构,大致上就是依照目录结构展开。 目录版本 Subversion也会追踪文件树结构,而不只是文件内容。Subversion中目录像文件一样,也有修订版号。“svn add”与“svn rm”命令可在目录上使用,就像在文件上使用一样。“svn copy”与“svn move”也是如此。但是这些目录不会马上让文件库有任何的变化。相反地,工作项目只是“预定”要被新增或删除。除非用户执行“svn commit”,不然文件库不会有任何变动。这一点有点像Windows下删除文件,只是在fat表作删除标记,而未真删除。 离线功能 Subversion的工作副本是针对网络带宽瓶颈做优化。.svn与CVS目录一样,都是管理用的目录,但是svn还多存放了文件的原始副本。这让用户能够离线进行许多事,举例如下: “svn status”显示本地更新; “svn diff”显示详细的更新细节; “svn revert”移除用户的本地更新。 另外,Subversion客户端在提交文件副本时只传送差异。这点是CVS没有的。 区分状态与更新 在Subversion中,我们试着要解决“cvs status”与“cvs update”命令之间的混淆不清。“cvs status”命令有两个目的,一是显示使用者在工作副本中的本地更改;二是显示使用者过时的文件。但是CVS显示的内容不易理解,许多CVS的使用者完全无法善用这个命令。取而代之地,就是执行“cvs up”来看他们的更新。 Subversion试着让“svn status”输出的数据易于让人理解,来解决上面这个问题。另外,“svn update”只会显示被更新的文件信息,而不会显示本地的更新。 属性 上一篇:巧用Sybase数据库的超级用户密码 下一篇:快速开始Perl XML:接口篇 更多相关文章
|
推荐文章
精彩文章
|