On 7月18日, 上午12時25分, Shunz <
rock...@gmail.com> wrote:
> 之前得过Richard多次指点,现在也斗胆来说说自己的一些拙见,错漏之处还请大家指正。
>
> CVS(Concurrent Version
> System)版本控制系统是基于GNU的版本管理软件,通常用来供多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。实际上CVS可以维护任意文档的开发和编辑修改,而不仅仅局限于程序设计。
>
> CVS的基本工作思路是:在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。由源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后用户可以在本地任意修改,最后用CVS命令进行提交(目前主流方式是Eclipse+CVS插件,直接从CVS上把项目的最新版本Update到本地,然后在本地修改完源码后Commit到CVS,很方便),由CVS源代码库统一管理修改。这样,就好像只有一个人在修改文件一样,既避免了冲突,又可以做到跟踪文件变化等。
>
> CVS基于客户端/服务器的行为使其可容纳多个用户,构成网络也很方便。这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。
> 也因此成为众多开源项目的首选版本管理工具,比如象Mozilla,GIMP,XEmacs,KDE,和GNOME等。
>
> 在传统的版本控制系统中,一个开发者检出一个文件,修改它,然后将其登记回去。检出文件的开发者拥有对这个文件修改的排它权。没有其它的开发者可以检出这个文件
> -- 并且只有检出那个文件的开发者可以登记所做的修改。(Axure 5添加的新特性其实就是基于这个模式)。
>
> 在一个大型的开放源码工程中,因为开发者可能在任意的时区工作得很晚,给予一个开发者阻止任意地方的其它开发者继续处理任意文件的能力很明显示无法运转。他们最终将因为不能够在他们想要的时候开展项目而感到厌烦。
>
> CVS通过它的无限制的检出模式解决了这个问题。检出一个文件并不给定开发者对那个文件的排它权。其它的开发者也可以对其检出,进行他们自己的修改,并且将其登记回去。
>
> "等一下!"你可能会说。"但是后面的登记不是会覆盖前面的吗?"回答是不会。详细地回答就是当多个开发者对同一个文件作了修改CVS会检测,并且自动合并那些改变。
>
> 哇噢。自动的?不用担心 -- CVS
> 会很小心,并且将会自动合并那些只要不是对代码的同一行所作的改动。如果CVS不能安全的处理这些改动,CVS会提示开发者进行手工合并。
> 上面就是有关CVS的大体特性,其实除了CVS,还有VSS和SVN,VSS就不多说了,微软的东西嘛,易用但功能也有限,SVN呢,是CVS的作者另起炉灶开发的,继承了CVS的优点,避免了CVS的一些缺点.
> 所以理论上应该比CVS更先进。但是目前对于一般的项目来讲,CVS更成熟,学习成本没那么高,成功案例也多,所以大多数的项目都采用主流的CVS。
>
> ok,关于版本管理工具,了解的也就这么多了,再有就超出Shunz的知识范畴了,不知道Richard兄会不会嫌不够看啊。
>