Professional Documents
Culture Documents
——WinCVS
作者:风中叶(张龙)
博客(CSDN 专家博客)
:
http://blog.csdn.net/ricohzhanglong
微博:http://t.sina.com.cn/fengzhongye
北京圣思园教育科技有限公司
http://www.shengsiyuan.com
2010 年 7 月 31 日
精通版本管理系统之 WinCVS 作者:风中叶(张龙)
声明
北京圣思园教育科技有限公司是一家面向高端培训的专
业教育公司,旨在通过高端的 IT 培训与严格的英文阅读技能
的培养为广大 IT 企业输出适合企业需求的高素质人才。
圣思园的讲师均来自于国内各大知名 IT 公司,具有深厚
的开发经验与专业的授课经验。
圣思园的目标是:为企业培养合格的人才。
圣思园的官方网站是:http://www.shengsiyuan.com
目录
1 前言 ............................................................................................................................................... 4
2 CVS 工作原理 ............................................................................................................................... 5
3 CVS 基本概念 ............................................................................................................................... 6
4 WinCVS 的工作模式 .................................................................................................................... 8
5 WinCVS 使用 .............................................................................................................................. 10
6 WinCVS 实用操作 ...................................................................................................................... 45
7 文件比较工具.............................................................................................................................. 81
8 使用 Eclipse 协同 CVS 进行版本管理 ...................................................................................... 91
9 后记 ........................................................................................................................................... 116
1 前言
2 CVS 工作原理
CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里
可以存放许多不同项目的源程序.由仓库管理员统一管理这些源程序.这样,
就好像只有一个人在修改文件一样.避免了冲突.每个用户在使用仓库之前,
首先要把仓库里的项目文件下载到本地.用户做的任何修改首先都是在本地
进行,然后用 CVS 命令进行提交,由 CVS 仓库管理员统一修改.这样就
可以做到跟踪文件变化,冲突控制等等.
3 CVS 基本概念
4 WinCVS 的工作模式
使用 WinCvs 的基本流程如下:
当您已经进行过上述流程,以后再使用时,就简化成只需要步骤 1)和步骤
5)就可以了。 也就是说我们只需要在第一次使用 WinCvs 时需要进行这五步操
作,以后再次使用时甚至连第一步都不需要,只是不断的重复第五步操作就可以
了。
WinCvs 客户端时就可以直接进入了,因为成功登陆后将在你的目录建立一
个 .cvspass 文件,所以以后就不用输入口令了。
5 WinCVS 使用
这是 cvsnt 的控制面板,界面很简单,从这里大家可以看到,cvsnt 已经
注册了两个系统服务,一个是 CVS Service ,另一个是 CVS Lock service,现
在这两个服务已经启动,大家可以到系统服务中去查找这两个服务
点击开始菜单,然后选择运行,输入命令 services.msc,确定。
出现系统服务界面
从这里大家已经看到,这两个服务已经启动,如果大家不想启动这两个
服务,那么可以在这里将其关闭,也可以在 cvsnt 面板中将其关闭,不过关闭
后 cvsnt 服务器将无法使用,所以不要关闭这两个服务。
选择 Repositories(就是我在之前介绍过的仓库,我们的所有项目都放在
这个仓库中 )选项卡。
由于之前没有建立仓库,所以目前是空的,下面我们来建立一个新的仓
库。点击 Add 按钮。
点击后面的浏览按钮。
这时出现我们本地硬盘的文件夹。我们准备将我们的仓库放在 F 盘的根
目录。
然后我们新建一个文件夹,名字叫 Server(名字可以随意起)
然后点击确定即可。
点击 OK。
这时出现一个对话框。
这样一个新的仓库就建好了,我们现在到这个目录中去看看,看多出来
一些什么东西。
点击开始—>设置—>控制面板
我们选择新建一个新帐户
在这里我创建的新帐户用户名为 zl,密码为 1234567。这个帐户和密码就是我
们后面使用 WinCvs 登陆服务器使用的帐户和密码。
到现在服务器端的工作我们就全部完成了,下面开始进入客户端 WinCvs 的
使用,这也是与我们平时工作关系最为密切的一部分。
点击开始—>程序—>WinCvs—> WinCvs(就是一个黄色的小鱼的图标)
这就是 WinCvs 的界面,大家在第一次进入时界面可能有些不同,不过没关
系,这些都是可以设置的
左边是目录信息窗口,右边是文件信息窗口,下面是信息输出窗口。
使用 WinCvs 之前需要先进行一些参数设置,这些设置只需要在第一次进行,
以后再使用时就不需要设置了。
然后我们在这个文本文件中写一些内容。保存,关闭。
点击确定。
WinCvs 界面如下
大家可以看到,在目录信息窗口中出现我们之前建立的那个空目录 Empty,
并且在文件信息窗口中出现了我们之前建立的文本文件 test.txt.
同样的操作也可以使用快捷按钮来完成,就是菜单栏下面的那个目录窗口右
边的浏览按钮,在 WinCvs 中有很多快捷按钮来完成与菜单同样的功能操作
接下来,我们将配置我们的登陆参数和其他一些相关的系统参数以便登陆到
cvs 服务器。
选择菜单 Admin—>Preferences… 或者是 ctrl+F1 快捷键
这里面的各个参数都很重要,有一个配置不正确便无法成功登陆到 cvs 服务
器,下面我来逐个讲解每个配置参数的意义与作用。
Authentication:指的是认证方式,cvs 提供了多种认证方式登陆
这里面只有两处需要大家注意
第一个是 Checkout read-only,意思是从服务器上 Checkout 的文件都是只
读的,因为大家都需要对从服务器上 Checkout 的文件进行修改,然后提交,所
以这一项一定不要选
第二个是 Quiet mode,意思是信息输出窗口只输出很少的信息,这对于出
错时大家排错很不方便,所以也一定不要选
选择 WinCvs 选项卡
这里面有两个地方需要大家注意
第一个是 External diff,意思是文件比较工具的选择,默认的情况下该选项
是不被选中的,那么文件比较的信息就会出现在 WinCvs 界面下放的信息输出窗
口中,这对于大家查看信息是很不方便的,所以我们在这里选择一个外部的文件
比较工具 WinMerge,在后面我会讲解该软件的使用方法,它大大方便了我们对
于代码文件的比较工作。
Default:是 WinCvs 默认的代码查看工具。默认为记事本(Notepad)当然我
们也可以在这里选择其他一些好用的文本文件查看工具,比如 EditPlus 或者
UltraEdit 等
点击确定按钮。
点击确定按钮。
这时出现输入密码的对话框,我们输入之前我们建立的帐户 zl 的密码
1234567
出现上面的窗口,我们可以根据自己的需要修改一些参数值。
下面的几项采用默认就可以了
在下面那个比较大的输入框中你可以输入一些日志信息,方便以后查看,不
输入也无妨。
接下来选择 Import options 选项卡
好了,到这里我们的配置就完成了,点击确定按钮。
大家可以看到在信息输出窗口中出现的信息,结束代码是 0,说明我们的操
作成功,我们已经成功将 Empty 这个目录 Import 到 cvs 服务器上了。如果有的
人的结束代码是 1,那么请仔细检查自己的参数配置。
大家发现里面有两个文件,而且文件名很奇怪,一个叫.owner,另一个叫 test.txt.v
这是 cvs 服务器给文件起的名字,一般来说我们不需要理会他们,因为我们只与
WinCvs,也就是客户端打交道
这里面记录着该文本文件的内容,版本历史,提交日期等一切与该文件相关的所
有信息,
绿色的内容是该文本文件的内容,就是我刚才建立该文件时输入的内容:This
is a test.
如果今后有人对该文件进行了修改,那么所有的相关信息都会记录在该文件
中去的。
这里面一般只有一项需要我们配置,那就是我们需要从服务器上 Checkout
的 Module 的名字,在我们的应用中,我们已经知道该 Module 名字叫 Empty,所
以在这里面我们填写:Empty
其他选项都不必改动,保持默认值就可以了,点击确定按钮
这正是我们建立该文件时所写的内容,可见我们已经成功将该工程 Checkout 到
本地了,从次之后,Client 下面的这个 Empty 就与 cvs 服务器发生了直接关系,
它的任何改动都将反映到服务器上去,也就是说从现在开始小组开发人员可以依
靠 cvs 进行协同工作了
6 WinCVS 实用操作
这是打开后的效果。
我们现在更改该文本文件,加入下面一些文字
保存,关闭。
这是 WinCvs 的一种提示方法,它告诉你该文件已经被你改动了,并且与服
务器上该文件的版本不一致了,我们可以看到现在该文件的版本是 1.1.1.1,接
下来我们将这个改动提交(Commit)到服务器上去,右键选中该文件,选择
Commit Selection…选项
在上面那个比较大的文本输入框中你可以输入一些日志信息,不输入也没有
关系,然后点击确定
这时大家看到信息输出窗口中出现一些信息,并且结束代码为 0,说明我们
的提交操作是成功的,这时 test.txt 文件名又变成了白色,并且版本已经变成了
1.2,说明我们已经将该文件提交到了服务器中了,我们到服务器中看看那里面
发生了什么。
北京圣思园教育科技有限公司版权所有 (All Rights Reserved)
深入浅出系列之一_WinCVS 作者:风中叶(张龙)
我们看到我们对于该文件的改动已经反映到了服务器上,在服务器上的该文
件中已经增加了我们刚才加入的那些文字:This is what I have added.
这里面有一些选项需要大家注意
第一个是 Get the clean copy,大家一定要慎重使用这个复选框,它的含义是
从服务器上得到完全的拷贝,并且覆盖本地的同名文件,如果选择了这一项,那
么本地上你所做的全部工作都将丢失,因此在实际工作中该项一般是不选的,一
旦误操作那么所有的工作都将全部丢失。
还有一个是 Create missing directories that exists in the repositories,它的含义是
如果服务器上含有你本地没有的文件夹,WinCvs 会自动在你本地创建该文件夹,
否则不会在本地创建该文件夹,那么你本地的文件就会比服务器上少,所以一般
这个选项需要选上,除非你能保证同一个开发小组的其他人员没有创建新的文件
夹。
我们点击确定。
这样 Update 操作就完成了,由于我们现在是一个人在使用,所以文件本
身没有任何变化,如果是多人协同开发时,当其他的开发者对文件进行改动后,
你 Update 后就会将其他开发者的改动更新到本地,你可以在本地的文件中看到
其他人对文件的改动。
注意:
下面介绍增加文件操作:
保存,关闭。
现在 Empty 目录下的文件如下:
现在我们回到 WinCvs,看看那里发生了什么变化
我们可以看到这里面也多出了一个文件,就是刚才我们新加入的那个文件
add.txt,不过它前面的图标是一个问号?这是 WinCvs 的一个提示信息,它的意思
是说该文件在你本地硬盘上存在,不过在服务起上并不存在,现在我们将它加入
到服务器上。
可以看到,该文件前的图标已经变成了白色,说明该文件已经提交到服务器
上了,我们再来看看服务器上的文件。
保存,关闭
我们新增加的目录已经出现在 WinCvs 中了
我们将 me.txt 文件增加到服务器中,操作方式与之前介绍的一样
增加目录之后,child 前的图标由之前的空的变成了现在的一个勾,这说明该
目录已经增加到服务器上了,接下来我们再将 me.txt 增加到服务器上,方法如前
所述
然后再进行提交(Commit)操作,方式如前
这时,me.txt 文件已经提交到了服务器上了,我们再到服务器上看看那里多
出了什么文件
注意:
增加文件到服务器之前一定要先将该文件所属的目录增加到服务器上,cvs
不会因为文件的增加而自动将该文件所属的目录也增加进去。
下面介绍删除文件的方法
下面我们来分别进行介绍,首先介绍 Remove 命令
在这里我们可以重新配置快捷菜单的内容,增加,删除一些选项,我们将
Remove 命令增加到快捷菜单中。
点击 ok,关闭窗口。
确定。
下面介绍另一个删除操作 Erase 命令
Erase 的功能是把你本地的文件删除掉,而远程仓库中的相应文件不受影响。
当您选择一个文件,进行了 Erase 操作之后,这个文件被打上了“Missing”的标记,
含义是这个文件在远程仓库有,而本地不存在。
选择 ok
命令执行成功后,me.txt 前面的图标显示为一个丢失的图标
该命令执行后对服务器没有任何影响,我们来看看本地文件
我们发现之前删除的两个文件都在这里。
执行后的界面
注意:
上面我们讨论了如何删除一个文件,那么如何才能删除一个目录呢,比如在
这里我们要把 child 目录删除,应该如何做呢?事实上,直接操作的方法是没有
的,WinCvs 并没有给我们提供这个命令,解决的办法是将服务器上的 child 目录
删除,然后我们重新 Checkout 该 Module 就可以了。不过这种情况比较少见,所
以我就不准备详述了。
下面介绍查看文件版本历史的方法
由于我们在实际工作中,可能会对代码文件进行多次修改,这样就会产生一
个文件的多个不同版本
点击确定
当前版本是 1.2
如果想查看某个版本的信息,可以双击该版本,这样就会出现该版本对应的
文件内容信息。
7 文件比较工具
选择菜单 AdminPreferences…
选择 WinCvs 选项卡
双击 test.txt,打开该文件
我们增加两行文字
保存,关闭文件。
这时 WinCvs 中该文件已经变成了红色,说明我们已经对该文件进行了
修改
如果有多个不同的地方,那么我们可以点击按钮向下移动,就是如图所
示的下一个按钮
这时不同的地方用红色的标明
我们可以选择快捷按钮中的复制到左侧,复制到右侧,或者所有到左侧,
所有到右侧来完成我们希望的操作,假设我们想用我们的本地文件覆盖掉服
务器上的文件,就选择复制到左侧按钮。
这时两个文件已经完全相同了,颜色变成了白色。
接下来保存,退出。
注意:
我们本地文件与之相比较的文件并不是真正的服务器上的文件,而
是服务器上的文件在本地的一个副本,因为文件比较时需要从服务器上下载
一个副本到本地参加比较,所以我们改变的只是这个副本,并不是服务器上
的文件,服务器上的文件并没有发生任何变化,如果我们再次选择 Diff
Selection…时仍会出现如下界面
回到 WinCvs 主界面
提交 test.txt 文件
再次对该文件进行 Diff 比较
出现该界面说明我们本地文件与服务器上的文件已经是一样的了。
启动后的界面
上面是我填写的一些参数配置,点击 Finish
Next
点击 Finish
同样选择 Yes
此处让我们输入一些注释,我就不输入了,ok
接着在该包下新建一个类:Sample
Finish
Sample 类内容如下:
然 后 我 们 将 这 个 类 提 交 到 CVS 服 务 器 上 . 方 法 是 右 键 该 类
TeamCommit
这就是该文件的内容,可以看到服务器上已经有了该文件的内容,说明我
们的提交是成功的.
9 后记