CVS.docx
《CVS.docx》由会员分享,可在线阅读,更多相关《CVS.docx(15页珍藏版)》请在冰豆网上搜索。
CVS
CVS的介绍及使用
什么是CVS
CVS(VersionControlSystem.)即版本控制系统。
用来记录源文件的历史信息。
甚至二进制文件,媒体文件等。
使用CVS,开发人员可以容易地回顾老的代码版本去发现哪一次的修改导致这些问题。
有时候这样会非常有帮助。
CVS可以协助一组人共同开发一个工程。
CVS为开发者独立工作时产生的文件冲突、合并提供了解决方案。
每一个开发者的工作都在他自己的目录内,并且CVS将在每个开发者的工作完成后进行合并工作。
CVS具备下述功能:
1、代码统一管理,保存所有代码文件更改的历史记录。
对代码进行集中统一管理,可以方便查看新增或删除的文件,能够跟踪所有代码改动痕迹。
可以随意恢复到以前任意一个历史版本。
并避免了因为版本不同引入的深层BUG。
2、完善的冲突解决方案,可以方便的解决文件冲突问题,而不需要借助其它的文件比较工具和手工的粘贴复制。
3、代码权限的管理。
可以为不同的用户设置不同的权限。
可以设置访问用户的密码、只读、修改等权限,而且通过CVSROOT目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。
4、支持方便的版本发布和分支功能。
基本概念
资源库(Repository)
CVS的资源库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令或着工具,获得一份本地copy,改动后再checkin(commit)回资源库。
而资源库通常与工作目录分离的。
CVS通过多种方式访问资源库。
每种方法有不同目录表示形式。
版本(Revision)
每一个文件都有一个版本编号,形如1.1、1.2.1、1.3.2.2。
一般1.1是该文件的第一个revision,后面的一个将自动增加最右面的一个整数,比如1.2,1.3,1.4...CVS就是通过版本来进行文件管理的,版本号之间的差别就标识了文件的新旧及是否需要合并或冲突处理。
标签(Tag)
用符号化的表示方法标志文件特定revision的信息。
通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定tag的文件提交或者checkout。
另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个tag中。
如果命名一个已存在的tag默认将不会覆盖原来的;
分支(Branch)
branch之间是相互隔离的,用户修改一个branch不会对另外的branch产生任何影响,并且可以在适当的时候通过合并的方法将两个版本合起来。
冲突(Conflct)
完全是纯文本的冲突,不包含逻辑上的矛盾。
一般是一份文件(假设版本为1.1),A和B都在对其进行修改,本地文件版本都为1.1。
如果B完成修改并先于A提交(Commit),这时文件在CVS服务器的版本就会升到1.2。
当A提交基于1.1修改的文件时,冲突就发生了。
这种情况需要手工进行处理。
ECLIPSE下CVS插件的使用步骤
建立CVSRepository
首次使用时,需要建立CVSRepository。
对于一个CVS服务器,只需建立一次CVSRepository,之后可以反复使用。
如图设置,用户名和密码需要向配置管理员申请。
弹出对话框
选择得到CVSRepositories.
新建一个CVSRepository
下载文件/工程
在CVSRepositories中
选择分支和版本,点“finish”按钮检出对应版本的工程,如下图。
平时使用
1、同步(Synchronize)
就是将本地更改与服务器同步,同步之后可以清晰的看到上一捡出(CheckOut)版本之后本地、服务器上的最新改动。
具体操作:
在Eclipse的资源视图(ResourcePerspective)或者Java视图(JavaPerspective)中,选中要同步的工程,点击右键选择"SynchronizewithRepository",之后它将显示同步的视图。
如下图:
同步之后,它有四种Mode可以选择,见上图红色框里按钮。
从做到右分别为:
1、IncomingMode:
“蓝色左指箭头”的图标,表示修改是来自服务器,可供本地更新(update)操作,即从服务器获得文件副本。
2、OutgoingMode:
“灰色右指箭头”的图标,表示修改是来自本地,可供提交(commit)操作,即将本地文件上传到服务器。
3、Incoming/OutgoingMode:
“蓝灰双向箭头”的图标,本地和服务器修改都在该模式(Mode)中显示,既含有能更新的文件,也含有可以上传的文件。
4、ConflictsMode:
“红色双向”箭头图标,显示本地和服务器修改的冲突文件。
2、更新(update)
选择IncomingMode,再选中要更新的文件或者文件夹,右键选择Update/OverrideandUpdate就可以更新。
Update:
更新非冲突文件,不更新冲突的文件,这种方式比较对本地修改安全;
OverrideandUpdate:
强制更新文件,强制用服务器的文件覆盖本地文件,不论是否冲突。
这种模式用于本地修改不需要保存到服务器的情况。
如果没有冲突,而且想要更新所有可更新的文件,可以使用“全部更新”功能。
3、解决冲突和合并(solveconflctandmerge)
本地文件和服务器的文件存在冲突,则在文件及其包路径上都有红色双向将头作为标志。
如果本地修改无需保存,则直接使用“OverrideandUpdate”进行更新。
如果本地修改需要保存,则需要进行文件合并,步骤如下:
1、将服务器端内容拷贝到本地
双击冲突的文件,将打开“文件比较器”。
将鼠标移动到需要的服务器修改处,点击按钮“<”,则可拷贝单项服务器修改到本地。
也可使用“复制全部不冲突服务器内容”功能批量复制所有不冲突的服务器修改。
如果是本地修改,则无法通过此方式复制到服务器端。
2、将本地文件标记为“经过合并”的
内容合并后,需要把本地文件进行“标记”,进过“标记”的文件不再显示为冲突,就可以上传了。
4、提交(commit)
更新服务器代码,解决冲突之后,首先要查看本地文件修改之后是否有错误。
如果有,当然首先解决错误,再提交。
提交时,须填写BUG号码,格式如下图的“bug:
6289”,其他内容可以换行填写,如下图的“修改计费策略”。
注意:
“target”目录、“Setting”、“.classpath”文件是不能提交的。
查看文件历史
查看文件历史
CVS的历史信息可用于追溯文件历史、查看各个版本的文件内容、被修改的原因、各个版本文件之间内容的比较。
显示history历史信息页面。
各个字段的意义:
Revision:
文件在CVS上的版本。
版本号前面带有“*”号,表示本地文件在该分支的当前所属版本。
“当前所属版本”不一定是最新编号,跟分支和获取版本有关系。
Tags:
文件的打包标签,标识被用于哪次打包。
文件被用于才有此标签,有多个标签表示被该版本文件被多次用于打包。
RevisionTime:
Revision产生的时间,即文件被提交到服务器的时间。
Author:
作者,即被哪个账号提交的。
Comment:
备注,需要填写Bug号码,可以另外加入额外的信息。
文件比较
选中一个版本,可使用和本地文件比较功能。
图示表示本地文件和1.10文件进行比较。
选中2个版本,可以使用选中版本之间的比较。
图示表示1.10和1.9版本间进行比较。