`
famoushz
  • 浏览: 2963580 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

比CVS更好用的SVN(Subversion)

阅读更多

http://industry.ccidnet.com/pub/article/c739_a177827_p1.html

长久以来,在开源世界中,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格式。

<ccid_nobr></ccid_nobr>

<ccid_code></ccid_code>#rpm -Uvh apr-0.9.5-0.2.i386.rpm
#rpm -Uvh apr-devel-0.9.5-0.2.i386.rpm
#rpm -Uvh apr-util-0.9.5-0.1.i386.rpm
#rpm -Uvh apr-util-devel-0.9.5-0.1.i386.rpm
#rpm -Uvh neon-0.24.4-1.i386.rpm
#rpm -Uvh neon-devel-0.24.4-1.i386.rpm
#rpm -Uvh subversion-1.0.0-1.rh90.i386.rpm
#rpm -Uvh subversion-devel-1.0.0-1.rh90.i386.rpm
#rpm -Uvh subversion-server-1.0.0-1.rh90.i386.rpm
#rpm -Uvh subversion-tools-1.0.0-1.rh90.i386.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”只会显示被更新的文件信息,而不会显示本地的更新。

    属性
    Subversion的一个新功能,就是用户可以将任何的资料附加到文件与目录上。这些资料被称为属性。用户要设定或取得属性的名称,可使用“svn propset”与“svn propget”命令;要列出一个对象上所有的属性,可使用“svn proplist”命令。

    冲突消解
    CVS会在文件内放置“冲突标记”,将冲突地方标示出来,但CVS做得并不够。许多使用者记不住(或没看清)在终端上快速闪过的带有冲突标志的代码。
    Subversion解决这个问题的方法是让冲突更明确地标示出来。它会记得文件处于冲突的状态中,除非用户执行了“svn resolved”命令,否则它不会允许用户提交。

    二进制文件与文本文件
    Subversion比CVS更善于处理二进制文件。 因为CVS使用RCS的关系,所以对于一个变动中的二进制文件,它将每个更新的副本都储存下来。但是Subversion不管文件是文本还是二进制类型,在内部都是以二进制差异比较算法来表示文件的更新部分。这表示所有的文件在文件库中都是以差异的形式储存。而且在网络上传输的,都是较小的文件差异部分。
    CVS使用者必须以“-kb”标记二进制文件。Subversion不进行任何的关键词或列尾符号转换,除非用户要求这么做。Subversion内部会维护文件是否为“文本”或“二进制”文件的记录,将其保存在工作副本中。在执行“svn update”的过程中,Subversion 会对本地的文本文件进行内容合并,但是不会对二进制文件做这样的事。

    小结

    Subversion有一份很好的文档——《Version Control with Subversion》(http://svnbook.red-bean.com/)。它提供了有关Subversion的各方面内容,如使用、管理和开发等。

    经过数年的开发,以替代CVS为目标的Subversion,终于出了1.0版本。相信以其强大的功能,对CVS良好的继承性,一定会有很好的发展。(T111)
分享到:
评论

相关推荐

    将cvs转换为svn库的工具cvs2svn

    本文将深入探讨CVS(Concurrent Versions System)到SVN(Subversion)的转换过程,重点介绍用于此目的的关键工具——cvs2svn。CVS是一种广泛使用的版本控制系统,而SVN作为其后继者,提供了一些改进的功能和更现代...

    从CVS迁移至SVN的两种方法

    随着版本控制系统的发展,越来越多的团队选择从CVS(Concurrent Versions System)转向SVN(Subversion),因为SVN提供了更强大的功能和更好的用户体验。本教程将详细解释如何使用两种工具,即SVN-Importer和CVS2SVN...

    cvs2svn-2.4.0.tar.gz

    cvs2svn is a program that can be used to migrate a CVS repository to Subversion (otherwise known as "SVN") or git. Documentation: The list of cvs2svn features explains briefly why converting a ...

    CVS 2 SVN 指导

    随着技术的发展,Subversion(SVN)因其强大的功能和性能逐渐取代了早期的Concurrent Versions System(CVS)。本文旨在深入解析如何使用cvs2svn工具将CVS仓库迁移到SVN,为开发人员提供一个全面的迁移指导。 #### ...

    我的cvs2svn笔记

    《我的cvs2svn笔记》是一份详细的指南,旨在帮助用户在Windows环境下将CVS(Concurrent Versions System)版本库转换为SVN(Subversion)版本库。CVS是一种广泛使用的源代码控制系统,而SVN则因其先进的特性,如分支...

    CVS和SVN配置学习

    CVS(Concurrent Versions System)和SVN(Subversion)都是广泛使用的版本控制系统,尤其在过去的几十年里,它们在开源社区和企业项目中扮演了重要角色。下面将详细介绍CVS和SVN的配置学习要点。 1. CVS简介: ...

    将CVS库转换为SVN库

    随着版本控制系统的发展与演进,从较早的集中式版本控制系统(如CVS)到更先进的Subversion(SVN),开发者们经常面临将现有CVS仓库迁移到SVN的需求。本文将详细介绍如何在Windows环境下完成这一过程,并给出具体的...

    CVS团队升级SVN团队的解决方案

    - **cvsimport**:由Apache Subversion项目提供,集成度高,但可能不如cvs2svn那样全面。 根据团队的具体情况选择合适的工具进行迁移。 ##### 2.3 升级后的优势 - **更高的效率**:SVN 提供了更快速的文件版本...

    CVS与SVN区别

    CVS(Concurrent Versions System)和SVN(Subversion)都是源代码版本控制系统,用于管理和跟踪文件及目录的变更。它们都属于SCM(Software Configuration Management)工具,但两者之间存在显著的区别。 1. **...

    CVS迁移SVN工具亲测可用

    在软件版本控制领域,CVS(Concurrent Versions System)和SVN(Subversion)都是广泛使用的系统。CVS曾是许多项目的主要选择,但随着时间推移,SVN因其更先进的特性和更好的管理功能而逐渐受到青睐。对于那些已经...

    Subversion与CVS的比较

    Subversion,简称SVN,是一款开源的版本控制系统,旨在提供一个超越时间限制的文件和目录管理方案。如同一款“时间机器”,Subversion的核心功能在于记录每一次对文件或目录的修改,使用户能够回溯至任何历史版本,...

    深入浅出SVN(SubVersion,版本控制系统) (pdf高清晰版)

    Subversion(简称 SVN),作为一种先进的版本控制系统,它的出现是对早期版本控制系统CVS(Concurrent Versions System)的一次重大革新。早在2000年,CollabNet, Inc.意识到CVS存在的诸多问题后,决定开发一个全新...

    CVS SVN VSS 对比 说明

    CVS(Concurrent Version System)、SVN(Subversion)和VSS(Visual SourceSafe)是三种著名的版本控制系统,各有特点和优劣。下面我们将深入探讨这三者之间的差异。 CVS是一种早期的开源版本控制系统,它允许...

    svn与cvs对比

    Subversion(简称SVN)和Concurrent Versions System(简称CVS)是两种广泛使用的集中式版本控制系统。本文将深入探讨SVN与CVS之间的差异,以及这些差异如何影响开发流程和团队协作。 #### 版本控制范围 - **CVS**...

    使用Subversion进行版本控制(针对 Subversion 1.4)

    迁移CVS版本库到Subversion C. WebDAV和自动版本 什么是WebDAV ? 自动版本化 客户端交互性 独立的 WebDAV 应用程序 Microsoft Office,Dreamweaver,Photoshop Cadaver,DAV 浏览器 文件浏览器 WebDAV 扩展 ...

    svn subversion

    Subversion的设计目标是提供与CVS类似的功能,同时解决CVS的一些问题,如目录版本控制、原子提交、以及更高效分支和标签机制。 目录版本控制是Subversion的一个关键特性,允许用户跟踪整个目录树的变更。这意味着在...

    cvs及Subversion相关资料

    本资料主要关注两种常用的版本控制系统:CVS(Concurrent Versions System)和Subversion(SVN)。下面将详细介绍这两个系统以及相关的知识点。 1. CVS(并发版本系统) CVS是一款开源的、网络化的版本控制系统,...

    SVN Subversion,SVNSubversion 最全面的资料及安装包

    SVNSubversion以及Subversion的详尽资料,word及PDF文档,和3个不同版本的安装文件,svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。欢迎大家...

    subversion-1.7.8 for windows

    Subversion的设计目标是替代CVS( Concurrent Versions System),为用户提供更高效、安全且易于使用的版本控制解决方案。"subversion-1.7.8 for windows" 提供的是Subversion 1.7.8版本的Windows平台安装包,这使得...

    清除当前文件夹下的cvs、svn标识

    标题中的“清除当前文件夹下的cvs、svn标识”指的是在版本控制系统中移除与CVS(Concurrent Versions System)和SVN(Subversion)相关的元数据或隐藏文件。这两个系统都是广泛使用的源代码管理系统,用于跟踪和控制...

Global site tag (gtag.js) - Google Analytics