作者:Bob Arnson 翻译:limodou
CVS是并发版本系统(Concurrent Versions System)的意思,主流的开 放源码网络透明的版本控制系
统。CVS对于从个人开发者到大型,分布团队都是有用的:
它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最 新的代码。
它的无限制的版本管理检出(check out:注1)的模式避免了通常的因为排它 检出模式而引起的人工冲突。
它的客户端工具可以在绝大多数的平台上使用。
CVS被应用于流行的开放源码工程中,象Mozilla,GIMP,XEmacs,KDE,和GNOME等。
那么它到底怎么样?
你可能会说,它非常棒,但是对于""我""来说它能做什么?首先,基本的 :一个版本控制系统保持了对一
系列文件所作改变的历史记录。对于一个开发者来说,那就意味着在你对一个程 序所进行开发的整个期间,
能够跟踪对其所作的所有改动的痕迹。对你来说,有没有出现过由于在命令行上 按错键而导致一天的工作都
白费的情况呢?版本控制系统给了你一个安全的网络。
版本控制系统对任何人都有用,真的。(毕竟,谁不愿意使用一个安全的 网络呢?)但是它们经常被软件
开发团队使用。在团队中工作的开发者需要能够调整他们的各自的修改;一个集 中式版本控制系统允许那样
做。
代码集中的配置
个人开发者希望一个版本控制系统的安全网络能够运行在他们的本地的 一台机器上。然而,开发团队需
要一个集中的服务器,所有的成员可以将服务器作为仓库来访问他们的代码。在 一个办公室中,没有问题 --
只是将仓库连到本地网络上的一台服务器上就行了。对于开放源码项目...噢, 还是没有问题,这要感谢因特
网。CVS内建了客户机/服务器存取方法,所以任何一个可以连到因特网上的开发 者都可以存取在一台CVS服务
器上的文件。
调整代码
在传统的版本控制系统中,一个开发者检出一个文件,修改它,然后将 其登记回去。检出文件的开发者
拥有对这个文件修改的排它权。没有其它的开发者可以检出这个文件 -- 并且只 有检出那个文件的开发者可
以登记(check in:注2)所做的修改。(当然对于管理员有很多方法可以超越这个 限制。)
想一下排它的检出可能会如何工作:Bob的兄弟检出 foo.java以便加入 注释,写好代码后他什么也没做。
然后他去吃午饭了。Bob吃完午饭后,发现他的老板所指给他的一个bug在 foo.java里。他试图检出 foo.java
... 但是版本控制系统不允许他这样做,因为他的兄弟已经把它检出了。Bob不 得不等着他的兄弟吃完午饭回
来(在这个""好""日子用了两个小时),他才可以修正bug。
在一个大型的开放源码工程中,因为开发者可能在任意的时区工作得很 晚,给予一个开发者阻止任意地
方的其它开发者继续处理任意文件的能力很明显示无法运转。他们最终将因为不 能够在他们想要的时候开展
项目而感到厌烦。
CVS通过它的无限制的检出模式解决了这个问题。检出一个文件并不给定 开发者对那个文件的排它权。其
它的开发者也可以对其检出,进行他们自已的修改,并且将其登记回去。
""等一下!""你可能会说。""但是后面的登记不是会覆盖前面的吗?""回答 是不会。详细地回答就是当多个
开发者对同一个文件作了修改CVS会检测,并且自动合并那些改变。
哇噢。自动的?不用担心 -- CVS 会很小心,并且将会自动合并那些只 要不是对代码的同一行所作的改
动。如果CVS不能安全的处理这些改动,开发者将不得不手工合并它们。
从此去往何处?
到现在为止,你已经毫不犹豫地着迷于CVS 的潜力,并且急不可待地想 开始。第一步就是去得到 适合你
的平台的CVS软件。安装CVS通常就是将其从你下载的压缩包中解开这么一件 事。配置CVS 可能要小心一些,
它非常依赖于你使用的平台和你的CVS代码仓库的存放地。CVShome.org存放了大 量的CVS 文档:
《Introduction to CVS》 Jim Blandy所写的一篇很棒地在线介绍。
我也推荐《 Open Source Development with CVS》 Karl Fogel写的。你可以读一下我写的关 于它的评
论在OpenAvenue VOX上。Karl已 经将书中关于CVS的部分置于GPL许可证之下;这篇文档在Karl的站点上
以多种文档格式提供。
《The Cederqvist》 -- 由Per Cederqvist所编写的CVS手册 -- 是一个关于CVS信息的全面资料。
有大量的可用在许多平台上CVS 附加工具,它们给 CVS增加了功能或使得CVS更容易使用。
最后,不要忘了论坛、邮件列表和新闻 组可用来进行讨论CVS。