CVS (Cuncurrent Versions System)是基于TCP/IP协议的版本控制工具,也是Open source界最重要的开发工具之一。
它原来主要工作在UNIX平台下,现在在windows平台上也出现了很多GUI工具。
关于其由来,发展,请参阅www.cvshome.org 。
CVS和其他大部分版本控制软件一样,是Client/Server结构的。你必须在本地为CVS repository准备好一个目录,来和服务器同步源代码。
和在Windows 开发平台中拥有很大用户群的Visual Source Safe(VSS)相比,CVS主要由两个不同之处。
一是VSS依靠服务器上的一个共享目录提供服务,每一个client必须能够访问这个共享目录。这也就决定了source safe在TCP/IP环境下使用很困难。对于分布跨越数个城市甚至国家的工作小组来说,只有通过VPN才能够安全的访问source safe数据库。(SourceGear公司(www.sourcegear.com)发售名为SourceOffSite的商业软件包,US$239 per user,也可以为远程用户提供通过TCP/IP访问source safe数据的能力。) 而CVS依靠TCP/IP连接提供服务,所以它天生就是为了在internet上协同工作而设计的。虽然基本的pserver连接安全性不是很高,但是通过使用SSH,可以获得很高的安全性。
二是CVS反对对文件上锁的机制。VSS以及其他很多传统版本控制工具要求一个文件只能有一个使用者,它必须先checkout声明编辑文件的独享权力,直到checkin为止。但是对于地理上不限制使用者位置的CVS来说,等待一个用户checkin是一件痛苦的事情,而互相沟通比一个紧密工作的团体更困难。CVS采取多个用户可以同时对一个文件进行编辑,然后commit的方式解决这个问题。假设由于沟通不足出现冲突,使用者必须手工解决冲突之后再进行commit。在这种情况下,冲突的开发者必须努力进行足够的沟通以避免再次冲突。
CVS服务器可以被配置为把commit记录自动张贴到新闻组或者开发者的email信箱中去。注意这些辅助记录将有助于开发者之间的合作。