CVS命令详解.docx
《CVS命令详解.docx》由会员分享,可在线阅读,更多相关《CVS命令详解.docx(22页珍藏版)》请在冰豆网上搜索。
CVS命令详解
CVS命令使用详解
序号
版本号
修订日期
修订概述
修订人
批准人
备注
1.
2006-8-2
起草
江菊
2.
2006-8-9
修订:
添加cvsgraph/cvsdiff等信息
江菊
3.
2006-8-11
修订:
1、tag详细说明
2、添加分支部分
3、细节修订
江菊
4.
5.
6.
7.
8.
9.
10.
11.
1Wincvs基础操作
配置wincvs环境
初始设置
在wincvs主窗口,点击“Admin-Preferences……”,如下图所示:
选择“Preferences”后,出现如下窗口:
在该窗口中,在“EntertheCVSROOT”栏设置用户名以及服务器地址,设置格式如下:
其中是cvs服务器的ip以及安装路径;
设置本地工作目录
在如下窗口设置本地工作路径:
登录及注销
登录
点击“Admin”-“login”,在出现的窗口中输入用户密码,如果输入密码正确,则会出现如下信息:
cvs-qlogin
(Logginginto)
*****CVSexitednormallywithcode0*****
如果密码输入错误,会出现如下信息:
cvs-qlogin
(Logginginto)
cvslogin:
authorizationfailed:
serverrejectedaccessto/data/cvsrootforuserjiangju
*****CVSexitednormallywithcode1*****
注意:
1、在wincvs中,凡是操作成功,都会出现“CVSexitednormallywithcode0”的信息,如果操作失败,会出现“CVSexitednormallywithcode1”的信息;
2、在wincvs中,在login成功后,如果不做logout操作,那么这次登录是永远生效的;故如果在公用机器上login之后,为了保证信息安全,必须执行logout操作;
注销
点击“Admin”-“logout”,直接登出,会返回如下信息:
cvs-qlogout
(Loggingoutof)
*****CVSexitednormallywithcode0*****
基础操作
cvscheckout
第一次操作需从cvs服务器端checkout自己有权限的目录。
点击“Create”-“Checkoutmoduel”,如下图:
在“Enterthemodulenameaddpathontheserver”框内输入要下载目录的全路径,例如要下载App/search/mp3/as,则如上图所示。
之后点击“Globals”,如下图所示:
按照上图将对应的勾加上或去掉;
最后点击“确定”按钮,即可将对应的模块checkout出来;
说明:
可以checkout某一个具体文件,给出文件的全路径及文件名即可;
做此操作时,注意去掉“Prune(remove)empty……”选项,去掉此选项,可以把空目录给checkout出来;
CVS的刷新功能不是很及时,checkout出来的目录不能及时显示出来,如果没有显示出来,可以按F5刷新;
在输入cvspath时,请注意一定要用“/”,不能用“\”;
cvsupdate
update是将服务器端的更新下载到本地。
具体操作为:
1.1.1.1update到主干最新版本
首先选择要更新的目录或文件,点击右键,执行“updateselection”,出现如下对话框:
(图2)
在该对话框中,按照上图所示将对应的勾加上,之后点击“确定”按钮,则会将服务器端的最新版本下载到本地;
其中,“Resetanystickydate/tag/-koptions”表示去掉本地所获取的某个版本;
“Createmissingdirectoriesthat……”表示获取到服务器端对目录的最后操作,即:
如果服务器端删除或/新增了子目录,该操作可以删除/新增子目录;
注意:
在本地修改文件前,请一定先update。
1.1.1.2update到某一个特定版本
首先选择要更新的目录或文件,点击右键,执行“updateselection”,出现图2,在图2中,选择倒数第二个选项,之后选择“Stickyoptions”,出现如下对话框:
按照图示输入update的tag名称或者revision,点击“确定”按钮,即可获取到该版本;
添加、修改、删除文件
1.1.1.3cvsadd
1.1.1.3.1添加目录
首先在本地建立新增的目录,之后鼠标选择该目录,执行add操作,如下图所示:
当目录添加成功后,按F5刷新,该目录上会出现勾,例如:
1.1.1.3.2添加文件
首先把要新增的文件放在对应的目录下,之后鼠标选择该文件,执行add操作,如下图所示:
添加后,被添加的文件会出现红色,此时要进行commit操作,如下图所示:
选择“Commitselection……”后,会出现如下对话框:
(图一)
在该对话框中输入cvslog信息,点击“确定”按钮,则提交成功。
注:
如果这个地方不输入cvslog信息,则提交不成功,所以在做cvsci操作时,一定要输入log信息;
1.1.1.4modify
在对文件进行修改后,修改后的文件会呈现红色,此时需要选择“Commitselection……”进行提交;
1.1.1.5cvsdelete
首先选中要删除的文件,之后选择“
”进行删除,删除之后,被删除的文件呈现红色,需要选择“Commitselection……”进行提交;
cvstag
tag是用来标识文件或目录的特定版本,其具体操作为:
1.1.1.6新增tag
1.1.1.6.1对目录打tag
首先选中要标识tag的目录或文件,之后点击按钮进行tag操作,如下图:
(图3)
进行第二步操作后,会出现如下对话框:
(图4)
点击“确定”按钮,即在对应的目录上打上了对应的tag;
1.1.1.6.2对文件打tag
对文件打tag的步骤与对目录打tag的步骤相同,区别的一点是:
在第一步要首先选中要标识tag的文件,其它步骤相同,其有以下特点:
可以针对某个具体的revision标识tag;
例如本地的文件revision是,而服务器最末端的文件revision是,如果在本地标识tag,则tag打在了版本上;
可以把同一个tag标识在不同的文件上,而当获取此tag时,可以把所有标识有此tag的文件获取下来;
例如服务器一共有4个文件,而如果我们只对其中的两个文件标识了tag,当获取此tag时,只会获取到标识了tag的两个文件;
1.1.1.7删除tag
删除tag操作步骤同tag操作类似,只是在“图3”中点击删除tag的按钮,之后在“图4”中输入要删除的tag名称,即可将已经存在的tag删除;
注:
当某个tag已经送测过,或成为基线后,则这个tag已经被scm加锁了,故是不允许删除的,如果删除此tag,会出现以下信息:
cvs-qtag-das_2-5-2-0_PD_BL(indirectoryE:
\cvswork\App\search\baidunews\news\as\)
app/search/baidunews/news/as对应的as_2-5-2-0_PD_BL是基线TAG
原则上是严禁修改基线TAG,若有必要请联系SCM!
cvsserver:
Pre-tagcheckfailed
app/search/baidunews/news/as对应的as_2-5-2-0_PD_BL是基线TAG
原则上是严禁修改基线TAG,若有必要请联系SCM!
cvsserver:
Pre-tagcheckfailed
cvs[serveraborted]:
correcttheaboveerrorsfirst!
*****CVSexitednormallywithcode1*****
cvslog
cvslog信息即为cvs日志信息,通过cvslog,可以查看到每个文件的修改历史信息,包括修改人,修改时间,以及每个文件小版本上存在的tag情况等等。
具体操作为:
首先选中要查看cvslog的目录或文件,然后点击右键选择“logselection”,在出现的对话框中直接点击“确定”按钮,即可查看到对应的日志信息,其日志信息如下图:
(图5)
cvsstatus
cvsstatus可以查看本地目录或文件的工作版本、tag等信息,具体操作为:
首先选中要查看cvsstatus的目录或文件,然后点击右键选择“statusselection”,在出现的对话框中直接点击“确定”按钮,即可查看到对应的信息,其输出信息如下图:
(图6)
cvsdiff
cvsdiff可以查看两个不同版本之前的diff,具体操作为:
首先选中要查看cvsdiff的目录或文件,然后选择“
”按钮,出现如下对话框:
在上图中,有三种不同的方式查看diff。
第一个选项:
compareyourlocalfilewiththesameremote
此选项表示:
查看本地文件与服务器上所下载下来的reversion文件的diff;
第二个选项:
compareyourlocalfilewiththeanotherrevision/tag/branch
此选项表示:
查看本地文件与服务器上其他revision或tag或branch的diff;
第三个选项:
comparetworevisions/tags/branches/dates
此选项表示:
查看两个不同tag或不同branch或不同revision的diff;上图演示的即是这种方式:
在上图中,输入两个不同版本的tag名称,即可进行比较,diff的输出信息为:
(图7)
cvsgraph
cvsgraph是以图形的界面形象的表现cvs的log、tag、branch信息,具体操作为:
首先选中要查看的文件,然后点击“
”按钮,出现如下页面:
在该页面中,可以点击每个revision(即、、等)来查看它的log信息,同时从图中可以查看到,每个tag、branch所在的具体revision,其中黑色的筐表示tag,蓝色的筐表示branch;
分支开发
分支开发比较复杂,有关此部分的操作,请参见《并行开发.doc》;
2linux命令行基础操作
配置环境变量
在本地的home目录下,在~/.bash_profile文件中增加如下一行,指定配置库路径
export:
/data/cvsroot
*[username]–用分配给自己的配置库账号代替
登录及注销
登录
命令:
cvslogin
若登录成功,则无返回信息,若登录失败,提示信息如下:
cvslogin:
authorizationfailed:
serverrejectedaccessto/data/cvsrootforuserjiangju
注销
命令:
cvslogout
执行完该命令,即登出,返回信息为:
Loggingoutof:
2401/data/cvsroot
基础操作
checkout
命令:
cvscocvspath导出CVS库中的最新版本
cvsco–rcvstagcvspath导出CVS库中指定版本
输出信息:
cvsserver:
UpdatingApp/search/mp3/as
UApp/search/mp3/as/Makefile
UApp/search/mp3/as/
UApp/search/mp3/as/
备注:
这里的cvspath一定要输入cvs全路径,否则会操作失败;
在执行checkout操作时,要确保是否对该模块具有访问权限,请仔细查看cvs的输出信息
update
在执行此操作时,首先进入到需要执行操作的目录。
2.1.1.1update到主干最新版本
命令:
cvsupdate–Ad
或者:
cvsup-Ad(update可简写为up)
注:
1、A表示去掉本地所获取的某个版本;
2、d表示获取到服务器端对目录的最后操作,即:
如果服务器端删除或/新增了子目录,该操作可以删除/新增子目录;
2.1.1.2update到某一个特定版本
命令:
cvsup-drcvstag更新到某一个tag
cvsup-dr分支名称更新到某一个分支上进行开发
2.1.1.3异常情况说明
情况1
M
异常分析:
产生的原因常是该文件本地被修改但是未提交cvs;
情况2
C
异常分析:
产生的原因常是文件名冲突(以大小写来区分文件名)或修改冲突
备注:
文件出现冲突时,必须手工解决所有的冲突之后才能够提交cvs,否则cvs将禁止你的提交;
为避免操作失误导致的本地修订版本的丢失,请先做好本地备份;
添加、修改、删除文件
2.1.1.4cvsadd
2.1.1.4.1添加目录
命令:
cvsadd目录名称
2.1.1.4.2添加文件
2.1.1.4.3添加文本文件
命令:
cvsadd文件名称
cvsci-m“commitlog”文件名称
备注:
1、.txt.cpp.h.sh均为文本文件;
2、在对.sh进行cvsadd之前,一定要检查该文件是否具有”x”权限,如果没有,请用“chmod+x*.sh”来添加;
2.1.1.4.4添加二进制文件
命令:
cvsadd–kb文件名称
cvsci-m“commitlog”文件名称
注:
doc、xls等均为二进制文件
2.1.1.5modify
命令:
vi文件名
cvsci文件名
2.1.1.6cvsdelete
命令:
rm文件名
cvsrm文件名
cvsci文件名
异常情况举例
情况1
cvsserver:
file`'stillinworkingdirectory
cvsserver:
1fileexists;removeitfirst
异常分析:
未先本地删除该文件,直接执行cvsrm
2.1.1.7cvsci
命令:
cvsci–m‘commitlog’文件名称
输出:
Checkingin;
/data/cvsroot/prod-all/cytest/,v<--
newrevision:
;previousrevision:
done
异常输出举例
情况1
cvsserver:
Up-to-datecheckfailedfor`'
cvs[serveraborted]:
correctaboveerrorsfirst!
异常分析:
未在主干或分支末端修改提交
情况2
cvsserver:
stickytag`as_1-1-0-3_PD_BL'forfile`'isnotabranch
cvs[serveraborted]:
correctaboveerrorsfirst!
异常分析:
未在主干或分支末端修改提交
情况3
cvs[serveraborted]:
Messageverificationfailed
异常分析:
未提交commitlog,即:
cvscommit-m"nomessage"
cvstag
2.1.1.8新增tag
命令:
cvstagtag名称
输出:
T
T
表示这两个文件被打上了tag
2.1.1.9删除tag
命令:
cvstag-dtag名称
输出信息:
D22/复件(6)
D22/复件
*****CVSexitednormallywithcode0*****
2.1.1.10覆盖已经存在的tag
命令:
cvstag-Ftag名称
输出:
T
表示该tag被打在该文件的新的版本上
cvslog
命令:
cvslog文件名
输出:
请参见节的“图5”;
cvsstatus
命令:
cvsstatus-v文件名
输出信息:
请参见节的“图6”
cvsdiff
命令:
cvsdiff-rcvstag1-rcvstag2
其中cvstag1、cvstag2指的是不同的cvstag;
输出信息:
请参见节的“图7”
2.1.1.11分支开发
分支开发较复杂,这里只简单的介绍命令,有关分支开发的详细内容,请参见《并行开发.doc》。
命令:
创建分支:
cvstag–bbranch名称
切换到分支上:
cvsup–drbranch名称