WinCVS--Daily Use Guide

    技术2022-05-11  103

    原文地址:http://www.thathost.com/wincvs-howto/

    WinCVS速查

    1.介绍

    2.术语

    3.开始一个新模块

    4.从CVS中获取一个新模块

    5.从CVS中获取他人的更改

    6.解决冲突

    7.将你的修订发布至CVS

    8.查看修改

    9.为文件添加标签

    10.添加文件和目录

    11.删除文件和目录

    12.移动/重命名文件、目录

    13.分支

    14.选择分支开始工作

    15.从一个分支合并

    16.返回开发主线

    17.正在编辑文件的是谁?

    18.附录A:FAQ

    19.附录B:CVS与VSS的区别

    介绍

    本文档描述了如何使用WinCVS。本文档不是介绍版本控制系统(VCS),也不是介绍CVS,更不是介绍WinCVS的文档。它在某种意义上来说,只是一个速查手册,当你遇到不熟悉的命令或是忘了某个功能该如何操作时,可以使用它来提醒自己。

    本文假设你以及安装完毕WinCVS并配好了CVS仓库。

    术语

    WinCVS中使用的术语与CVS基本相同,可能与其他的版控软件使用的术语有所出入。下面就给出这些术语列表作为简单的参考:

    Checkout

    从CVS仓库中获取模块。

    Commit

    将自己对模块所作的修改发布至CVS仓库。

    Export

    从CVS中导出模块,不受版本控制。存放在选定的目录。

    Import

    将新建模块导入至CVS仓库。

    Module

    目录层次,一个项目通常以一个模块的形式存在于仓库中。

    Release

    整个产品的版本。

    Revision

    单个文件的版本

    Tag

    可以描述一个文件集合的特定标识。

    Update

    从仓库中取得其他人所作的修改以更新本地的文件模块。

    开始一个新模块

    在具有版本控制的情况下获取一个项目,以CVS术语来说叫做importing。

    开始import操作需要一个空的目录环境。所谓的空目录环境指的是把所有不需要版本控制的文件都移除,比如编译结果文件,备份文件等等。这一点对你的项目十分重要,那些不需要版控的文件,你可以在import之前先转移至某个其他文件夹,等import结束后再把它们拷贝回来。

    注意:CVS对待空目录的方法是当它不存在,也就是说,如果你要import一个空目录,这是不可能完成的。所以建议你在目录下放一个Readme文件,用它来描述目录的意义。

    一旦准备好目录和文件,这时候就可以开始import了:

    点击图标change location,如图:将路径设置到CVSROOT下。

    在左边目录树里选择需要Import的模块,按右键(或者选择菜单Remote->Import Module),选择Import Module。在出来的提示框中直接按OK即可。

    现在WinCVS将把你的整个目录import至CVS服务器。但是你的本地文件并不处于版控状态,解决的方法就是把CVS上的刚import的文件checkout到本机。

    从CVS上获取模块

    第一次从CVS服务器上获取模块,也就是所谓的checkout。checkout就是将仓库里的模块按原有目录文件层次在你的电脑上重建一份并进行版本控制。按下面的方法进行checkout:

    在左边目录树里选择需要Checkout的模块右键选择Checkout Module,在Module Name and Path name字段处输入你希望checkout的模块名称,即可将CVS中的指定模块checkout。

    在Checkout Settings对话框里点击Globals选项卡,可以在checkout下拉框里选择Checkout read-only,这个选项的作用就在于,它可以告诉其他的开发者你正在编辑这些文件。

    从CVS中获取他人的更改

    有时你会需要获取别人对项目的更改,在自己的机子上建立完整的最新的代码。这个处理过程称作updating,update可能是单个文件或者是多个文件又或者是整个目录层次结构。按照如下方式进行update:

    在左边目录树里选择需要update的项目,右键选择Update,在Update Settings里勾选上Create missing directories that exist in the repository,即可更新选中项目。

    其他开发者所作的更改将与你的文件合并,但是它会保护你对相同文件的修改。update不影响仓库。

    解决冲突

    有时,在你更新自己的项目时,CVS服务器会提示更新冲突。冲突的发生主要是由于相同文件的同一处你和其他开发者都修改了,CVS不会知道你们所作的修改哪个更为重要,所以它会提示开发者们自行修改。所以,当发生冲突,你需要打开文件,找到发生冲突的那一行,通常CVS会将冲突部分以字符串<<<<<<<<<<<形式指示出来。

    你需要自行作出判断,修改,然后提交自己的程序。

    将你的修订发布至CVS

    在Commit之前,必须先进行一次update,以确保没有冲突。

    只要服务器和本机上同时都有的模块,当本机模块修改后就可以Commit,方法为:在左边目录树里选择需要Commit的模块右键选择Commit即可。

    建议在Commit Settings对话框里添加log消息,标注所作修改。

    查看修改

    WinCVS可以用于查看文件或目录的状态,日志,变更等等。

    在右边的视图里按右键,可以选择查看Diff,Log,Status,Graph,在弹出的设置框中设置必须的选项,单击OK,在Output窗口中将显示结果。

    下面是各个功能简单的定义:

    Diff:比较本地文件和仓库中相同文件的不同之处。也可以比较不同版本的区别。

    Log:显示日志消息,时间标签,作者等等。

    Status:显示指定文件的修改状态,例如,文件是在本地被修改还是在仓库被修改了。同时也可以显示仓库中的版本号,标签等。

    Graph:这是一个很cool的特性,可以对一个文件以图形形式查看版本历史。图形允许你选择两个不同版本进行对比。

    为文件添加标签

    在某个开发阶段,指定一些通用的标签给某些文件,可以有效的记录某些关键信息。这种称为tag的功能通常用于整个的模块。在将来重构模块时,这些tag将十分有用。

    添加Tag的方法:

    选择需要添加tag的文件、目录,选择菜单Modify下的Create a Tag。在New Tag Name里输入你想要创建的Tag,按OK按钮。注意Tag名称不能包括点,空格等字符,只能由字母开头,只允许由字母、数字、-和_组成。有两个CVS的保留字是不能用在Tag上的,它们是:“HEAD”和“BASE”。HEAD指的是仓库中的最新版本,而BASE指的是你最近一次checkout的版本。

    添加文件和目录

    当你创建了新文件,而它又不受版本控制。这时你需要将它添加进CVS仓库。

    按下面步骤添加:

    在右边视图里点击需要添加的文件或文件夹,点击菜单Modify里的Add或是Add binary(用于非文本文件)来完成操作。由于这时这些文件仅仅被标识为附加,你还需要进行Commit操作才能真正将文件加入CVS仓库。

    删除文件和目录

    删除文件:

    首先你要确定哪些文件需要删除,然后Commit。

    具体做法如下:

    选择你要删除的文件,点击菜单Modify里的Remove按钮,然后commit。

    删除目录略有不同

    ...

    移动/重命名文件、目录

    CVS中,该功能不可行。

    分支

    版本控制系统中最重要的一个功能就是分支版本控制。它允许将开发分成不同版本线,每个版本线就是一个分支。下面讲解如何创建一个分支:

    选择你要设置分支的目录或文件,点击菜单Remote下的Create a branch,在New branch name文本框里填上分支名。将Check that the files are unmodified before branching复选框勾上。

    这样一个新的分支就建立了。

    *选择分支开始工作

    要选定一个分支来代替默认的开发线进行工作,你需要把自己的本地拷贝和分支进行绑定。需要作的操作有Updates,commits等等。

    *从一个分支合并

    当你对分支开发的成果感到满意,认为可以集成到主线版本时,就要进行下面的merge操作。

    *返回主线开发

    当你不再开发支线版本而回到主线版本时,需要使用WinCVS删除相关的Tags。

    按如下方法操作:

    正在编辑文件的是谁?

    可以查看CVS中的某个文件是谁在编辑。但是要在开始版控前安装一个叫做IR CVS的模型。

    附录A:FAQ

    问:Server上的时间不对,tags和logs显示的时间都是错的,为什么?

    答:这是一个特性,CVS总是使用UTC时间来记录log。

    附录B:CVS和VSS的区别

    区别很多,最显著的区别在于,VSS将checkout的文件锁住,只允许check的用户编辑。而事实上,CVS鼓励开发者不使用文件锁定,不同的开发者对同一文件的更改,CVS总能将它们(合并)merge。而发生冲突,CVS也总能及时的给出报告。

    还有一个重要的区别:VSS展示给用户的是服务器端视图,而WinCVS展示的是客户端视图,这意味着WinCVS通常不会告诉你仓库里哪些文件已经修改,除非你执行了update操作,或是查询某个文件的状态,这时,WinCVS才会给你一个报告,指出那些文件已经修改。

    CVS不是“Visual”的,它一直都是以命令行形式存在的,只是这几年才开发了GUI界面的WinCVS。

     

    最新回复(0)