Professional Documents
Culture Documents
2.1 同步(Update)
好习惯
“先同步 后工作”。每次使用 WinCvs 开始工作前,应该先 Update 一次,这样
我们就能在文件的最新版本上工作。
同步的操作:
使用鼠标选择一个目录或者一个文件,也可选择多个,使用下面三种等效操作即
可:
1)菜单: Modify->Update
2)快捷键:Ctrl+U
3)点击 Update 工具按钮, 如下图所示。
在上图中,我们选择”MyWork”目录,进行上述操作之一后,WinCVS 会显示下
面的信息:
cvs update (in directory F:\Working\MyWork\)
cvs update: Updating .
cvs update: Updating CIni
cvs update: Updating Doc
现在,我们已经进行了同步,最新版本已经到了我们的工作目录下了,可在
此基础上进行工作了。
2.2 提交修改(Commit)
我们对一些文件进行修改,来模拟日常的程序修改过程以及版本变化过程。
首先,为 WinCVS 配置一下外部文本编辑器。笔者最常用的文本编辑器是
UltraEdit, 我们在主菜单选择 Admin,再选择 Preferences 菜单项,就会出现下面
的 Preference 对话框。我们选择 WinCVS 栏目,把 UltraEdit 的可执行目录和程
序名填写到 Default Editor 中去:
注意,在上面的对话框中,还有一项叫 External diff, 这是文件差异比较工具,
也就是比较两个文件(或者同一文件的不同版本)差异的。笔者推荐使用 Araxis
Merge。关于文件差异比较,可参考本章的 2.7 节: “比较文件两个版本的差异”。
如何对文件进行编辑呢?
有三种不同的等效做法:
1)选择需要修改的文件,用鼠标双击它。
2)选择需要修改的文件,按 F4
3)用鼠标选择某个文件,然后按鼠标右键,在弹出的对话框中选择”Edit with
Editor”子菜单,如下图所示:
当我们在文本编辑器对选定的文件进行编辑,并且存盘之后,我们发现,在
WinCVS 中,这个文件图标变红了,如下图所示:
小提示
WinCVS 图标变红的文件,表示最近经过了修改,其内容已经和原来的版本产
生了差异。
4)点击鼠标右键,在弹出菜单中,选择 Commit。
无论通过上述哪种操作,WinCVS 都会在真正提交修改之前,弹出下面的对话框:
我们建议您在这个对话框中,对刚才的修改进行一些简单的说明,也就是
在”Enter the log message”下面,写上一些简洁的文字,如上图所示。
好习惯
“先注释,后提交”。对修改进行简单文字说明,是一个好习惯。这样,今后
你和你的同事都知道这个版本进行了什么样的改动,方便自己也方便别人。这
和在程序源代码中加入必要的注释道理类似。
成功地把修改提交到了远程仓库中之后,我们会看见新文件的版本已经从
1.1.1.1 变成了 1.2, 而且 WinCVS 也输出了许多关于这次提交的信息,如下图所
示:
2.3 添加文件(Add)
在开发过程中,工作目录中可能会因工程需要添加新的文件。如何把新的文
件置于 CVS 管理下?例如,在原来的工作目录(F:\Working)下,我们新增加了文
件 AboutDlg.cpp
这个新增加的文件,并不一定会出现在 WinCVS 的文件列表上。我们需要在
主菜单 View 下,选择 File Filter 子菜单,把 Hide Unknown 选项的钩去掉,才能
看见新加的 AboutDlg.cpp,如下图所示。请注意,现在出现在 WinCVS 中的
AboutDlg.cpp,其图标是一个问号,而且没有任何版本标志。这表明,它对于
WinCVS 是未知(Unknown)文件,CVS 并没有对 AboutDlg.cpp 进行版本管理。
所以我们需要把新的文件置于 CVS 管理下。
小提示
灵活使用主菜单 View->File Filter,我们能够方便地在 WinCVS 下观察不同类型
的文件。
向 CVS 添加新的文件,具体操作如下:先选中需添加的文件,然后在主菜
单 Modify 下选中 add 即可,也可以直接使用工具条中的 Add 按钮,如下图所示:
需要注意的是,添加有三种方式:
add: 以文本方式添加,
add binary 以二进制形式添加,
add Unicode:以 Unicode 形式添加。
对于源代码,需要用文本形式添加,而对于图形文件,声音文件,Word 的 Doc
文件等等,都需要用二进制方式添加。
警示:
如果以文本方式添加二进制文件,可能会对二进制文件造成损害。
AboutDlg.cpp 是源代码,我们用文本形式添加之后,出现下图所示情况:
首先,AboutDlg.cpp 出现了一个标有红色字母”A”的图标,它的版本(Revision)
是“0”。
其次,WinCVS 的输出信息提醒我们:
2.4 删除文件
操作后,情况如下图所示:
按“确定”,就会发现已经在本地删除的文件又从远程仓库拷贝了一份回来。
2.5 添加目录
添加目录:在项目开发过程中,如果本地新增加了子目录,也需要 CVS 管
理起来的话,就需要添加新增加的子目录。
练习操作:
在本地 F:\Working 目录下,新建立一个子目录叫“新添加的目录”。
小提示
您可以给新的子目录起任何名字,我们这里只是示意。
把若干文本文件和二进制文件拷贝到“新添加的目录”。
用鼠标选“新添加的目录”,再在主菜单 Modify 下,选择“Add”,如下图所
示。
这样新的子目录就被加上了,见下图:
遗憾的是,新添加的目录下那些文本文件和二进制文件都没有被加入到 CVS 中。
你需要自己手动把这些文件一一加入。
小提示
使用主菜单 Modify->Add 添加子目录时,WinCVS 不会自动把子目录中的内容
添加到 CVS 仓库中,您需要自己手动添加。
这当然很不方便,希望新版本能够解决这个问题。添加文件的具体操作,请
参考本章 2.3 节:“添加文件”
2.6 删除目录
2.7 查看文件的版本历史沿革
WinCVS 提供了很方便的图形功能,能够让我们以形象的方式来查看文件版
本的历史沿革,并比较任意两个版本之间的差异。
在我们的例子中,我们先对某个文件,比如 GuiDrawLayer.cpp,进行多次修
改和提交,使其版本变成 1.5,这样做的目的是为了演示 WinCVS 显示版本历史。
文件的修改和提交,可参考本章的 2.2 节,提交修改(Commit)。
现在,让我们选择需要查看版本历史的文件,例如 GuiDrawLayer.cpp。然后
选择主菜单 Query,选择“Graph”菜单项。这个操作也可用 Ctrl+G 快捷键或者
工具条上的“Graph selected”按钮来实现。如图:
现在,选定文件的所有版本出现在一个图形文件中,如下图所示:
这个图形显示的,是文件的版本变化历史,非常直观。
您可以用鼠标选择任意的版本,例如 1.4, WinCVS 将在信息输出区显示这个
版本的相关信息,这些信息,其实是您在 Commit 的时候,自己输入的。
利用这个版本历史图,我们可以进行很多有用的操作,例如比较文件任意两
个版本的差异,获取某个版本文件的内容等。
2.7 比较文件两个版本的差异
我们只要在文件版本历史图中,选择两个版本,就可以比较它们的差异。具
体操作是:
1) 显示文件版本历史图,具体操作见本章 2.6 节。
2) 在图中,选择两个需要比较的版本。例如,我们先用鼠标选中 1.2, 然后按下
Ctrl 键,再用鼠标选中 1.5, 就可以比较版本 1.2 和 1.5 的差异了。
3) 在主菜单 Graph 中,选中“Diff”菜单项,或者按 Ctrl+D 快捷键。见下图。
如果您安装并配置了文件差异比较工具,例如 Araxis Merge, (见本章 2.2 节),
文件比较工具就会把这两个版本文件之间的差异显示出来,这对于软件开发工作
非常有用。
2.8 提取文件从前版本的内容
在软件开发过程中,由于种种原因,有时候需要某个文件从前的一个版本内
容。WinCVS 提供了非常方便的手段来实现这一点。操作过程是:
1)显示特定文件版本历史图,具体操作见本章 2.6 节。
2)在版本历史图中,选中需要提取文件内容的版本。
3)按鼠标右键,在弹出菜单中选中”Retrieve revision as….”,见下图。我们的例
子中,选择了 1.2,也就是需要获得 GuiDrawLayer.cpp 文件的 1.2 版本内容。
软件开发过程中,经常有这种现象:改着改着把某文件改糟了,不想用了,
想获取一份从前好的版本,在它的基础上重新开始修改。WinCVS 提供了方便的
手段来实现这一点。
在下面的例子中,我们在 GuiDocSpecial.cpp 文件的 1.2 版本上进行修改,结
果没有改好,我们想回复原来的 1.2 版本。
具体操作方法是:选择 GuidocSpecial.cpp,然后进行 Update 操作,如下图所
示: