cvs是一个版本控制系统,用于记录原文件的版本信息,适合于多人共同开发同一个项目。目前源代码是开放的。本文介绍WinCVS使用中的一些体会。
一、基本概念
(1) repository仓库:用于存放版本控制下的所有目录和所有各种版本的文件;CVS会完成对repository的查询和更新。
(2)数据如何存放在repository中:随着CVS版本的不同,存放结构会发生变化,一般情况下用户无需了解数据到底是如何存放的。
(3)revision :每一个file的各个revision都不相同,形如1.1, 1.2.1,一般1.1是该文件的第一个rivision,后面的一个将自动增加最右面的一个整数,比如1.2, 1.3, 1.4...有时候会出现1.3.2.2,原因见后。revision总是偶数个数字。一般情况下将revision看作时CVS自己内部的一个编号,而tag则可以标志用户的特定信息。
(4)tag: 用符号化的表示方法标志文件特定revision的信息。通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定tag的文件提交或者checkout。另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个tag中。如果命名一个已存在的tag默认将不会覆盖原来的;
(5) branch :当用户修改一个branch时不会对另外的branch产生任何影响。可以在适当的时候通过合并的方法将两个版本合起来;branch总是在当前revision后面加上一个偶数整数(从2开始,到0结束),所以branch总是奇数个数字,比如1.2后面branch为1.2.2,该分支下revision可能为1.2.2.1,1.2.2.2,...
(6)conflct:完全是纯文本的冲突,不包含逻辑上的矛盾,比如CVS不能解决如下问题:某人修改了函数f的参数,而另外一个人在另外一个地方用老的参数调用该函数。文本冲突需要用户自己参与解决,CVS无法自动解决。
(7) checkout:将代码目录checkout到指定目录下,所有文件都是read-write
二、设置示例和使用问题
(1) 如何提交自己所作的改动
使用commit的向服务器提交改动的源文件。
commit到服务器的方法是:
选中文件,右键选commit
冲突:多人同时修改同一内容。冲突的情况下,通过文件两个版本的比较消除冲突的地方后再次提交。比较两个版本不同的方法是:
可以利用CVS自带的比较工具,CVS会把不同部分通过
<<<<<<<<<<<
...
==========
...
>>>>>>>>>>>
列出来;
也可以利用其它文本比较工具比较(Preference setting中选定,Query-diff setting中选定);
(4) 如何update
选中改动的文件,右键选update
(4) 添加文件到模块中
分为添加文本文件和添加二进制文件两种,千万不要搞错。
以上为个人使用总结,不当之处请指正。