技术开发 频道

版本控制系统简介RCS/CVS/Subversion

    CVS(Concurrent Versions System) 

    CVS是继RCS等传统的维护工具之后,新一代的程序开发与维护系统,现在网络上许许多多的 Open Source Project,几乎都是使用 CVS 来做版本控制的工具,它拥有以下的特色:

    程序代码版本的储存与维护
    程序代码版本的追踪回溯
    程序代码版本的分合控制
    支持多人合作开发项目
    程序代码远程管理维护
    程序代码匿名截取

    另外,CVSup 和 CVS 是两个不一样的东西,前者大都是方便使用者可以取得与开发者同步程序代码所的工具,它是透过比对 server/client 之间的 source code cvs id table 来判断那些档案需要修改,在速度上有很大的优势。另外还有一项使用 CVSup 的优点是它可以在你的本地机器上复制整个 CVS repository,允许快速的本地使用 cvs 操作,像 log 和 diff。

    CVS 是给开发人员用的。不过许多 Open Source Project 都会提供 anonymous CVS,通常只有 read 的权限。给其它使用者取得他们所想要的版本,主要的作用就是把最新开发的程序代码给喜欢新鲜货的人,让大家一起来测试,对一个 project 的开发,相当有帮助。

    CVS 也不支持档案更名. 也就是说, 如果我们想要变更某个档案的名称, 那么它以前所累樍的更动与批注就得丢弃. 它也不支持以目录为单位的变动, 所以要想回复某个时间的目录内容是不可能的.

    另外,介绍一些好用的GUI的CVS界面

    WinCVS:win32环境下的,不过笔者觉得相当难用。

    Cervisia:KDE的CVS GUI界面,可以和Konqueror整合,使用上感觉相当亲切。

    Subversion
   
    一套更好的 CVS! 它同样也是开放源码, 而且架构, 命令列程序界面等, 都刻意模仿 CVS, 为的就是要让习于 CVS 的使用者能够快速上手.

    目录版本控制

    在 CVS 中, 一个目录是没有版本历程的. 假如原本一个名为 doc/ 的目录, 在经过一段时间之后, 发现它应该要称为 manual/ 比较恰当, 此时我们只能建立一个新 manual/, 把 doc/ 目录下的档案复制过去, 把 manual/ 下的档案新增至 CVS 系统中, 再把 doc/ 删除. 而且必须注意的是, 在档案的复制与删除的过程当中, 我们也同样地遗失了这些档案的历史历程. 版本控制最主要的数据就这么丢掉了!

    但是在 Subversion 中, 目录跟档案同样都是纳入版本控制之中. 也就是说, 我们可以随时要求 Subversion 将某个档案回复到某个时间点的状态, 也可以对目录进行更名的动作.

    不可分割的送交

    在 CVS 中, 虽然我们可同时对复数档案进行送交, 但是 CVS 并不保证一次的送交是不可分割的. 也就是说, 如果我们同时对三个档案进行送交, 但是在第二个档案时发生意外状况 (例如档案有冲突, 或是网络断线), 此时 CVS 系统中会有送来的第一个档案的更动, 但是没有第二个与第三个的. CVS 系统里的档案就变成一个与我们预期不一致的状况!
Subversion 的送交就没有上述的问题. 也就是说, 送交的结果, 不是全都进系统, 就是全都没有进系统, 不会只有一部份进系统的状况.

0
相关文章