旧文章,写于2004年10月13日。
在过去的开发中,尽管借助了XP方法的一些思想,但在代码、文档的版本控制方面依然相当脆弱,需要花费相当的时间来手动进行版本管理。最近在一个项目开发中,受开源项目的启发,采用了CVS来进行版本管理。
CVS即Concurrent Versions System,协同版本系统,用于对源码、文档等文件进行版本控制。不少著名的开源软件都是采用这个系统进行版本管理。其具有冲突控制、EMail通知、变更日志、版本恢复等诸多实用功能。CVS采用的是C/S结构,服务器端和客户端都有Windows版和Linux版。
笔者采用了Linux系统作为CVS服务器,用Cervisia(KDevelop自带)作为Linux的客户端,用WinCVS(中文版)作为Windows客户端。
1.CVS服务器的配置
获取:在Linux下可以通过访问
https://www.cvshome.org来下载CVS服务器端,也可以通过APT或者APT for RPM来下载并安装CVS。
配置:首先必须启用XINETD服务,然后在XINETD的配置中启用cvspserver这个服务。启动参数:-f --allow-root=/PATH/TO/YOUR/CVSROOT pserver。--allow-root是CVS目录,该目录必须对于登录用户有读写权限,这样在客户端就可以用此帐号登录并读写此目录。其他配置全部按照默认即可。
重启机器后(在SuSE下可以直接点[ON]来启动,不需重启)CVS服务器就已经被激活了。
2.Cervisia的配置
获取:如果已经安装了KDevelop3.1,那么Cervisia2.1就已经一起安装并集成到文件管理器中了,这时在Konqueror的工具栏中可以找到[Cervisia]按钮,当本地目录存在CVS数据时,点击此按钮即可转变为CVS视图。
配置仓库:在菜单中选择[仓库]->[仓库],点[添加],在[仓库]中填入:pserver:/$user@$host:/$path,其中$user指要登录的用户名;$host指服务器的地址,用域名或IP均可;$path指cvsroot目录位置,应该与第一步指定的路径一致。点[确定]完成仓库创建。
登录:选中刚才创建的仓库,点[登录]并输入密码,若输入正确,则系统会自动登录到CVS服务器上,并且将密码保存到当前用户的配置目录下,将来如果没有改动,就不再需要输入密码了,这点应该注意一下。
打开CVS文件夹:所谓CVS文件夹,是指从CVS检出到本地的工作文件夹,其中的每个目录都会有一个CVS子目录,那是用于版本管理的。从菜单->[文件]->[打开沙箱]中选择一个CVS文件夹,则主视图中就会列出该文件夹中所有文件的版本状态。
基本操作:建议打开文件状态的自动更新功能。方法:[设置]->[配置Cervisia],然后如下图设置。
根据文件的状态来选择各项操作,如果是[Up to date],则说明已是最新版本;若是[需要更新],则说明服务器的版本较新,需要用[更新]功能;若是[已更改],说明本地文件版本较新,需要[提交]。
3.WinCVS的配置
与Cervisia大同小异,这里就不再赘述了。值得一提的是,配置里提到的HOME目录,指的就是用来保存WinCVS配置及CVS用户密码的目录,一般用[我的文档]即可。
流程概述:
首先由任一客户端建立工程,然后用[导入]功能导入到CVS仓库中。其他客户端用[检出]功能来检出仓库中的模块到本地的工作目录。
任何用户修改了源代码后,用[添加]、[提交]或[删除]功能来进行源码修改。
如果发生冲突(即同一版本号的文件有两个人提交,但是内容不同),则用[比较]及[解决冲突]功能来解决冲突。
其他用户可以用[更新]功能来获取最新的源码,用[浏览日志]功能查看版本历史及图形。
可以配置CVS的Trigger,以实现EMail的自动寄送。也可以通过配置CVS客户端为自动更新文件状态,这样即可及时知道源码的当前状况而不需首先使用[更新]。
除了CVS之外,其他著名的版本控制系统还有微软的VSS(Visual Source Safe)和号称CVS接班者的SVN(SubVersion)等等。VSS在企业开发中也具有相当不错的效果,而SVN相比CVS则确实有了功能上的改进。有关这些版本控制系统的比较,可以参考
这里的文章 。
软件下载地址:
CVS:
https://ccvs.cvshome.org/
Cervisia:
http://www.kde.org/apps/cervisia/
WinCVS:
中文版 英文原版