一、客户端的配置
启动pagent,添加私钥;启动wincvs,配置好preference选项(admin菜单里)。
详情请见CVS客户端配置。
让我悄悄告诉你,在preference里好将“globe”选项卡中的“checkout read-only”置空,这可是tianyuan的秘技:)
二、初始化
如果你已经连上服务器,做过checkin、checkout等工作,可以略过这一步。
选择creat->creat a new reporsitory,无需更改默认配置,确认即可。
如果一切正常,会在窗体下部的output窗口显示如下信息:
cvs -d :ext:monkey@monkeygro:/cvs/hrsystem init
*****CVS exited normally with code 0*****
第二行如果不是以“0”结尾,出现其他数字,表明出错了。
三、上传文件(checkin)
窗体中部左边有一个explore页,点击它,选择你准备上传的文件夹;点击菜单栏的creat->import module from selection,会跳出一个import filter窗体。如果你的文件里有错误,import filter窗体里会有error或warn标志,如果真是这样,你好还是先看一看有何问题。
下一个跳出的窗体是import setting,在select the module name and path on the remote server里面填上一个名称,当你的文件传上服务器后,cvs服务器里会以这个名称建立一个代码库,存放刚才传上来的文件。
请记住,下拉框并没有什么神奇的功能,它只能记住你上次填进去的东西。
四、下载文件(checkout)
经过上一步操作,你在服务器里有了源代码,所有的开发者可以开始工作了。
当然,开发者需要先下载一个拷贝到本地才能修改它。
1. 建立本地工作目录
在自己的硬盘上新建一个目录,很多人都取名为“work”,表示这是工作目录。其实,这只是一个好习惯而已。
2. 下载文件
选择creat->checkout module,出现的窗体是checkout setting,在module name and path on the server中填写你在第三步(上传文件)中,上传到服务器中的模块名称。如果你记不住第三步你填写了什么,你可以先看一看本文的第九步。
五、修改与提交
1、edit与uedit命令
现在,你可以准备修改源代码了。不过,当你到自己的本地工作目录中,可能会发现下载回来的文件都是只读的,这是因为你在第一步中preference中,没有将checkout read-only置空。
在Wincvs中,你到窗体中部的module页中,找到自己准备修改的文件,在右边的浏览窗口里选中它,然后选择菜单栏中的trace->edit selection,可以将不可读的文件置为可读。
2、更新(update)
你喜欢那一种开发工具?VB、VC、Java还是Delphi?现在你可以开始你异常熟悉的代码开发工作了。
无论你用那种工具,当你修改了工作目录中的文件后,在Wincvs里,你可以看到这个文件变成红色了。
有一个好习惯是,在你准备提交到服务器之前,先更新一下,因为有可能别的开发者在你修改这个文件的同时,也可能也修改了这个文件,这有可能会存在冲突,我们总是在提交前先处理冲突。
更新的操作很简单:选中你修改了的文件,在菜单栏中选择modify,一般情况下,无需修改默认选项。
处理冲突请看本文第十节冲突处理。
六、标记(tag)
标记是版本控制中很重要的功能。
除了通常的作用,它还可以标记修改者,让大家知道,是谁提交了一个新版本。
在Wincvs中选择准备标记的文件,然后在菜单栏中选择modify->creat a tag on selection;马上creat tag setting窗体会出现,在new tag name中填入标记名即可。
七、分支的管理
我们在这里先详细说一下分支的作用。
我们设计了一个图书管理系统,把1.0版交给了客户A大学;然后我们继续开发,有了新版本1.1版、1.2、1.3......这时A大学告诉我们,1.0版本有bug,我们很快在1.0版本的源代码中找到了错误所在。
这时候,简单的解决办法是给A大学一个bug patch。你会问,为什么不给客户新版本?原因很简单:第一,我们还没有检查新稳定版本中又无此bug;第二,客户的系统已经运行了一段时间,升级到新版本上可能还会发生更多新问题。
那么,我们应该在1.0版本上建立一个分支,在这个分支上进行开发,修改bug ,创建bugpatch,客户马上能解决问题了。
然后我们关起门来,查看新版本上有无此bug;如果有,将分支合并到主版本上,解决新版本的问题。
实际操作如下:在菜单栏的creat->creat a branch,在跳出的creat branch setting窗体上,new branch中,填入你给分支取的名字;在module to fork中填入文件名;请记住,你要在rtag options选项卡中,选中rev./tag/branch,填入版本号。如果你这里不填,生成的分支将会以新版为分叉点。
八、锁定文件
这可是武汉自由软件协会的另一个秘技。
一般而言,在项目小组中,项目经理会定期公布新的基础版本,要求小组成员都在这个基础版本上进行进一步开发。
在实际工作中,总会有些成员提前完成工作,他们提交更改后,新版本会比项目经理发布的基础版本的version更高。
有时候,某些项目成员会有意无意修改基础版本,并且指定提交到基础版本上,如果允许他们提交修改,大家可能都会在一个错误的基础版本工作,后果是不堪设想的。
锁定文件的操作如下,菜单栏的admin->comandline,输入这个命令:
cvs admin -l版本号 文件全名
注意,-l和版本号之间没有空格。如果你锁定成功,会有如下提示:
RCS file: /cvs/hrsystem/test/new.txt,v
1.1.2.3 locked
done
*****CVS exited normally with code 0*****
九、文件浏览。
1. 文件标志浏览
2. 通过Web页面浏览
3. 文件对比
十、冲突处理
十一、管理员的工作
1. 协调小组,制定代码管理规范
2. 及时发布官方版本信息
3. 充分利用标记和分支管理开发团队