资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,1.1 软件配置管理(SCM)相关概念,9.1.1 版本管理不同产品的简单介绍,配置管理软件分类:,软件的版本管理(CVS是软件版本管理的工具),构件管理,缺陷和跟踪管理,产品介绍:,1)高端产品,如:Rational clearCase,2) 中端产品,如:PVCS (pvcs version manager ,pvcs tracker)、Perforce,3)低,端,端产品,vss,1.2CVS概述,等不同,的,的平台,上,上开发,应,应用,,而,而共用,一,一个CVS服,务,务器。,强大的,分,分布式,开,开发支,持,持:CVS一,直,直以支,持,持分布,式,式开发,作,作为其,基,基本特,征,征。,支持并,行,行开发,:,:允许,多,多个开,发,发人员,对,对同一,个,个文件,进,进行开,发,发工作,,,,并对,多,多个开,发,发者的,工,工作进,行,行整合,。,。,强大的,可,可塑性,:,:不论,是,是一个,源,源代码,组,组成的,项,项目开,发,发管理,,,,还是,代,代码量,超,超过几,百,百兆的,项,项目,,均,均管理,自,自如。,触发器,及,及定制,功,功能:,这,这种功,能,能帮助,开,开发者,将,将CVS和变,动,动/跟,踪,踪系统,紧,紧密集,成,成,以,形,形成完,整,整的软,件,件配置,管,管理系,统,统(SCM),。,。,1.3CVS的安装,和,和配置,如果未,报,报错误,,,,则CVS服,务,务器安,装,装OK,了,了。,whereis cvs,指定CVS仓,库,库,cvs,仓,仓库(Repository)是,保,保存软,件,件资源,的,的设备,,,,可以,根,根据需,要,要选择,一,一目录,作,作为库,的,的位置,,,,如,,/,/cvsap,用,超,超级用,户,户建相,应,应目录,。,。,mkdir,/,/cvssrc,mkdir,/,/cvssrc/master,CVS,服,服务器,的,的初始,化,化,在确定CVS,仓,仓库位,置,置后,,就,就可以,初,初始化CVS,服,服务器,。,。在初,始,始化的,过,过程中CVS,创,创建其,文,文件系,统,统,并,产,产生原,始,始内容,。,。在目,录,录/cvsap目录,下,下,以,超,超级用,户,户身份,在,在提示,符,符下执,行,行:,roothostcvs /root$,roothostcvs /root$cvs d /cvssrc,/,/master init,其中的,目,目录project,为,为项目,源,源代码,的,的资源,目,目录。,执,执行命,令,令:,roothostcvs /root$ls,/,/cvssrc,/,/master,CVSROOT,roothostcvs /root$ls,a,/,/cvssrc/master,/,/CVSROOT,该目录,下,下是原,始,始内容,,,,如果,该,该目录,为,为空,,则,则初始,化,化失败,。,。,用户组,和,和用户,帐,帐号的,设,设立,用户组,和,和帐号,的,的设立,原,原则:,进,进行配,置,置管理,的,的用户,和,和进行,开,开发的,用,用户分,别,别设立,不,不同的,用,用户组,,,,如,cvsadmin和cvsuser 两,个,个组,,在,在两个,不,不同组,上,上建立,管,管理用,户,户和开,发,发用户,。,。,CVS,的,的权限,设,设定的,原,原则是,:,:,CVS,用,用户必,须,须拥有,对,对/cvsap/src/master,/,/CVSROOT目,录,录及其,中,中所有,文,文件的,读,读权限,。,。,CVS,用,用户必,须,须拥有,对,对/cvsap/src/master,/,/CVSROOT目,录,录下history,文,文件的,写,写权限,。,。,CVS,用,用户如,果,果希望,对,对系统,中,中的模,块,块(如,,,,project),代,代码等,资,资源的,修,修改,,必,必须对,该,该目录,有,有写权,限,限。,对于普,通,通的开,发,发用户,应,应该设,为,为:对,/,/cvsap,/,/src/master/CVSROOT目录,及,及其下,的,的所有,文,文件有,读,读权限,;,;对/cvsap/src,/,/master/CVSROOT,/,/history下,的,的文件,有,有写权,限,限;对,某,某个项,目,目(模,块,块)下,的,的文件,有,有读写,权,权限(,如,如,project,),)。,区分管,理,理员和,普,普通用,户,户的权,限,限设定,1)添,加,加cvsadmin,用,用户组,2)添,加,加cvsuser用,户,户组,3)添,加,加CVS管理,员,员帐号,到,到cvsadmin,4),添,添加CVS普,通,通用户,到,到cvsuser,5),让,让cvs管理,员,员拥有,对,对配置,目,目录及,其,其下文,件,件的读,写,写权限,,,,同时,给,给cvs的普,通,通用户,对,对配置,目,目录及,其,其下文,件,件的读,权,权限。,rootcvshost /root,$,$ chgrp R cvsadmin,/,/cvsap/src/master,/,/CVSROOT,rootcvshost /root,$,$ chmod R 064, /cvsap/src,/,/master/CVSROOT,6),给,给cvs普通,用,用户对,目,目录/cvsap/src,/,/master/project,的,的读写,权,权限,rootcvshost /root,$,$chgrp,Rcvsuser,/,/cvsap,/,/src/master/project,rootcvshost /root,$,$ chmod R 060,/,/cvsap,/,/src/master/project,CVS,的,的口令,服,服务器,CVS,口,口令服,务,务器配,置,置的目,的,的是使cvs,用,用户的,远,远程计,算,算机能,访,访问CVS服,务,务器。,其方法,分,分两步,:,:,以超级,用,用户在hostcvs服务,器,器上的,/,/etc/services的文,件,件中添,加,加一行,:,:cvspserver2401/tcp,。,。最简,单,单的方,法,法是执,行,行命令,:,:echocvspserver 2401,/,/tcp , /etc,/,/services,。,。注意,:,:端口,号,号2401不,要,要重。,这,这种方,式,式是IBMUNIX系统,。,。,如果使,用,用的是Redhat6.2,及,及以前,的,的版本,或,或使用inetd超,级,级服务,器,器的UNIX,版,版本,,用,用超级,用,用户在,/,/etc/inetd.conf,文,文件中,添,添加一,行,行,加,在,在末尾,:,:,cvspserver streamtcpnowait root,/,/usr/local/bin,/,/cvs cvsfallowroot=/cvswork pserver,。,。,如果是Redhat7.1或其,他,他新版,本,本的Linux,则,用,用超级,用,用户身,份,份打开,/,/etc/xinetd.conf文件,,,,并在,文,文件中,添,添加:,service cvspserver,port,=,=2401,socket,_,_type,=,=stream,wait,=,=no,user,=,=root,server,=,=,/,/usr/bin/cvs,server,_,_args,=,=,-,-f,-,-allow-root,=,=/cvssrc/masterpserver,bind,=,=,本,本机器,的,的IP,地,地址,启动inetd/xinetd超,级,级服务,器,器,配置好,的,的口令,服,服务器,是,是包在inetd/xinetd,超,超级服,务,务器内,的,的一个,程,程序。,启,启动的,方,方法为,用,用超级,用,用户登,陆,陆,执,行,行命令,:,:,roothostcvs /root$unsetHOME,用来清,除,除超级,用,用户的,$,$HOME的,环,环境变,量,量,否,则,则执行CVS,命,命令会,出,出错。,roothostcvs /root$,/,/etc/rc.d/init,.,.d/inetdrestart,也可能,是,是/etc/init.d,/,/inetdrestart。,或,或者,roothostcvs /root$,/,/etc/init.d,/,/xinetd restart,至此,CVS,服,服务器,安,安装和,配,配置工,作,作完成,。,。,如果是HPUNIX 则,启,启动超,级,级口令,服,服务器,的,的方法,为,为:,ps,ef,|,|grepinetd找出inetd进程的,进,进程号,kill HUP,让inetd进程重,新,新读入,配,配置文,件,件使得CVS服务生,效,效,测试CVS口,令,令服务,器,器,在cvshos服务,器,器上,,执,执行如,下,下命令,:,:,rootcvshost /root$telnet localhost2401,客户端,的,的安装,和,和配置,介绍CVSROOT,环,环境变,量,量设置,格,格式:,(19,页,页),客户端,的,的Unix/linux的安装和CVS,服,服务器,安,安装过,程,程相同,,,,这里,不,不再赘,述,述。CVSforunix/linux客,户,户端的永久配置方,法,法为:,sh/ksh,,,,用编,辑,辑器打,开,开$HOME,/,/.bash,_,_profile文,件,件添加,:,:,CVSROOT=:pserver:cloud110.60.40.34:,/,/src/master,exportCVSROOT,csh,用编,辑,辑器打,开,开$HOME,/,/.cshrc文件,,,,在文,件,件的末,尾,尾添加,:,:setenv CVSROOT,:,:pserver,:,:public192.168,.,.25,.,.6:,/,/cvssrc/master,其中的public,为,为客户,端,端的用,户,户在服,务,务器端,的,的帐户,/,/用户,名,名。,CVSfor WinCVS的,永,永久配,置,置为:,在窗口,中,中选择Admin-,-,-Preferences并在General选项,卡,卡中输,入,入,如,图,图。,关于unix,/,/linux,客,客户端,的,的临时,配,配置:,sh/bash:,testlinuxtest$exportCVSROOT,=,=:pserver:public192,.,.168.25.6,:,:/cvsap/src/master,csh,:,:,testlinuxtest$setenvCVSROOT,:,:pserver:public,192.168.25.6:/cvsap/src,/,/master,测试远,程,程访问,CVSfor unix,/,/linux,:,:,testlinuxtest$cvs login,cvspassword,:,:,WinCVS,:,:,AdminLogin,输入口,令,令即可,。,。,在Visual Studio,中,中集成CVS,(,(23),1.4CVS工,作,作原理,及,及基本,命,命令,仓库的,概,概念已,经,经描述,,,,在CVS库,中,中CVS以一,种,种特殊,的,的文件,格,格式(RCS,),)来保,存,存这些,资,资源。,仓,仓库按,照,照目录,和,和文件,结,结构组,织,织。仓,库,库中每,个,个目录,对,对应一,个,个项目,,,,如:和cvsap/src,/,/master在同,一,一层次,的,的目录,除,除CVSROOT外,,,,其他,每,每个目,录,录都应,该,该是不,同,同的项,目,目。其保存,了,了各个,版,版本的,文,文件,,并,并记录,了,了版本,的,的修改,信,信息。,统一文,件,件的不,同,同版本,之,之间具,有,有派生,关,关系,,在,在版本,库,库中只,存,存储不,同,同版本,间,间的改,动,动,从,而,而节约,空,空间。,(,(29,页,页),工作拷,贝,贝是指,每,每个开,发,发人员,在,在开发,过,过程中,拥,拥有一,个,个独立,于,于其他,开,开发人,员,员的整,个,个软件,项,项目的,全,全部代,码,码的拷,贝,贝,在,客,客户端,,,,它和,主,主拷贝,(,(仓库,),)构成,了,了CVS客户,/,/服务,器,器模式,。,。工作拷,贝,贝的每,个,个目录,中,中有一,个,个CVS目录,其下,的,的文件,是,是cvs管理,控,控制文,件,件。(31页,),),cvs命令的,格,格式:,cvs,cvs-option, command,command,-,-option,如:your,_,_client$cvs,Qchecktest,可以用,命,命令:cvs,-,-help-commands来查,看,看cvs的命,令,令。,在winCVS中在command linesetting,菜,菜单中,输,输入命,令,令即可,。,。,Init命令(,初,初始化,版,版本库,),),如:cvs,d,/,/cvsap,/,/src/masterinit,import,命,命令,从客户,端,端登陆,服,服务器,。,。在客,户,户端有,目,目录,,如,如,test,,,,其中,有,有源文,件,件和子,目,目录,,将,将目录test下的,内,内容加,入,入服务,器,器作为,一,一个项,目,目(如,,,,project,test),,即,即一个baseline。,命,命令为,:,your_client$cdtest,your_client$cvs login(loggingintoyour server),cvspassword,*,*,*,*(你的,服,服务器,端,端cvs帐户,口,口令),your_client$cvs import,m,“,“initialimport,”,” testSSEstart,该命令,将,将当前,目,目录(,包,包含子,目,目录),下,下的所,有,有内容,,,,都放,进,进CVS系统,中,中,其,中,中,,-m,表,表示在命令,中,中要加注释内,容,容,test 为,该,该项目,名,名称,SSE,为,为厂,商,商标识,start,为,为版本,标,标记,没有冲,突,突表示,创,创建新,的,的项目,仓,仓库成,功,功。,在WinCVS中可,以,以在菜,单,单中实,现,现。,checkout命,令,令,checkout命,令,令是将,我,我们选,定,定的CVS服,务,务器上,指,指定仓,库,库中的,一,一个项,目,目代码,取,取到本,地,地的工,作,作目录,下,下。,如果要,将,将仓库,中,中的test,项,项目的,代,代码取,到,到本地,个,个人目,录,录下,,执,执行:,your_client$cd,$,$HOME,your_client$cvs checkout test,项目代,码,码会保,存,存在个,人,人目录,$,$HOME/test下供,你,你个人,开,开发或,修,修改。,当,当你打,开,开checkout,出,出的源,代,代码所,在,在的目,录,录,会,发,发现代,码,码中的,每,每个目,录,录(包,括,括每个,子,子目录,),)中均,有,有名为CVS,的,的子目,录,录。这,些,些目录,并,并不属,于,于代码,,,,它是CVS,系,系统使,用,用的目,录,录,其,中,中保存,着,着CVS管理,文,文件。,这,这是工,作,作拷贝,与,与普通,目,目录文,件,件的不,同,同。这,些,些文件,对,对于CVS很,重,重要。,所,所以不,要,要随便,的,的改变,或,或移动,、,、删除,这,这些CVS目,录,录及其,中,中的文,件,件。解释CVS子,目,目录中,的,的文件,(,(43,页,页),注意:,这,这里的test为用,户,户的目,标,标目录,。,。根据,用,用户client端,的,的配置,:,:CVSROOT,:,:pserver:public,192.168.25.6:/cvsap/src,/,/master,命,令,令cvs checkout test,从,从服,务,务器的,库,库中,,即,即将目,录,录/cvsap/src/master,/,/test下,的,的所以,内,内容包,括,括子目,录,录检出,到,到客户,机,机的$HOME/test,目,目录下,同时,生,生成目,录,录test。当然,,也,也可以,检,检出单,个,个文件,。,。,diff命令,CVS,能,能将你,工,工作的,拷,拷贝中,的,的源代,码,码文件,与,与仓库,中,中的版,本,本进行,比,比较,,发,发现差,异,异。(45,页,页)如:,your_client$cvs difftest.c,your_client$cvs diffc test,.,.c,该命令,能,能看到,对,对照的,结,结果。,应,应该注,意,意的是,显,显示内,容,容中的,“,“+”,表,表示添,加,加行,,“,“!”,表,表示修,改,改,其,余,余的显,示,示内容,和,和UNIX系,统,统中的diff命令,显,显示相,仿,仿。,your_client$cvs diffr 1,.,.1r 2,.,.1test.c,该命令,比,比较库,中,中两个,不,不同版,本,本文件,差,差异。,commit,命,命令,提交操,作,作会改,变,变仓库,内,内容。,提,提交之,后,后,代,码,码成为,整,整个,系,系统,的,的一个,部,部分了,。,。由于,软,软件的,复,复杂性,,,,需要,对,对提交,进,进行控,制,制。所,以,以在提,交,交时应,当,当遵循,一,一定的,流,流程,,进,进行一,定,定的软,件,件质量,保,保证(SQA,),)工作,,,,这些,工,工作包,括,括评审,(,(review)、,提,提交报,告,告等。,提交源,代,代码的,命,命令为,:,:,your_client$cvs commit,m,“,“add stringvariableandheaderstring,.,.h”test.c,注意:,如,如果输,出,出类似,以,以下内,容,容的结,果,果即提,交,交失败,,,,此时,应,应该用update命令更新个人工,作,作目录,下,下的源,代,代码。,cvscommit:Up-to-datecheckfailed for,test.c,cvs,commitaborted:correct above errorsfirst!,这里的,“,“-m”后面的,是,是CVS注释,。,。CVS强制,要,要求用,户,户在任,何,何一次,提,提交、,导,导入等,操,操作时,加,加入注,释,释。养,成,成注释,的,的习惯,非,非常重,要,要。,CVS,支,支持中,文,文注释,。,。如果,不,不在命,令,令行中,加,加入注,释,释,那,么,么CVS将自,动,动启动,默,默认编,辑,辑器,,请,请用户,输,输入注,释,释,只,有,有用户,保,保存注,释,释并退,出,出这个,编,编辑器,之,之后,,提,提交才,能,能成功,。,。,update,命,命令,该命令,既,既可针,对,对单个,文,文件,,也,也可针,对,对一个,目,目录,,或,或者整,个,个项目,。,。,更新单,个,个文件,your_client$cvs updatetest.c,执行上,述,述命令,后,后,用,户,户当前,工,工作目,录,录中的,文,文件test,.,.c的,内,内容与,仓,仓库中,的,的最新,版,版本完,全,全相同,了,了,因,为,为在你checkout该,文,文件后,,,,在修,改,改该文,件,件的过,程,程中可,能,能他人,已,已经修,改,改并提,交,交了该,文,文件,,即,即你的,修,修改不,是,是基于,库,库中最,新,新版本,。,。所以,,,,你必,须,须先update,,再,再提交,该,该文件,才,才能提,交,交成功,。,。不过,可,可能有,冲,冲突要,解,解决,,原,原因是,对,对同一,个,个文件,的,的同一,处,处代码,进,进行了,不,不同的,修,修改。,解,解决冲,突,突的办,法,法就是,通,通过编,辑,辑文件,,,,修改,发,发生冲,突,突的部,分,分。对,于,于逻辑,问,问题CVS无,法,法发现,,,,所以,版,版本冲,突,突的处,理,理应该,与,与软件,开,开发中,的,的需要,相,相结合,。,。另外,,,,可以,通,通过more,命,命令看,以,以下合,并,并后的,文,文件,,如,如,moretest.c。,更新整,个,个项目,your_client$cvs update,执行上,述,述命令,后,后,用,户,户当前,工,工作拷,贝,贝中属,于,于本项,目,目的所,有,有文件,与,与仓库,中,中的最,新,新版本,完,完全相,同,同了。,需,需要注,意,意其警,告,告信息,。,。,log,命,命令,每次提,交,交一个CVS,操,操作时,,,,必须,填,填写日,志,志信息,,,,否则,拒,拒绝提,交,交。日,志,志信息,可,可以在,命,命令行,中,中加“,-,-m”,参,参数表,示,示。如,果,果日志,过,过长,,可,可以不,用,用“-m”参,数,数而直,接,接运行,,,,CVS会弹,出,出一个,编,编辑器,,,,让用,户,户在编,辑,辑器中,输,输入注,释,释信息,。,。CVS对注,释,释信息,没,没有长,度,度限制,。,。这种,日,日志信,息,息是CVS进,行,行软件,变,变化跟,踪,踪的一,种,种机制,。,。,每个版,本,本均有,日,日志信,息,息。用,户,户可以,查,查看某,个,个文件,的,的全部,历,历史日,志,志记录,,,,也可,以,以指定,查,查看某,个,个版本,或,或某个,日,日期的,日,日志记,录,录。查,看,看日志,信,信息使,用,用命令,:,:cvs log(53,页,页)。,查看文,件,件test.c全部,日,日志,,使,使用命,令,令:,your_client$cvs logtest.c,查看test,.,.c文,件,件1.2版本,的,的日志,,,,使用,命,命令:,your_client$cvs logr1.2 test,.,.c,再如:cvslog d“2002,-,-06,-,-01,2002-07-01;2002-08-01,test.c(该命,令,令不能,在,在windows上,执,执行),上面命,令,令假设,现,错,错误版,本,本号为1.3,,,,正确,版,版本号,为,为1.2。该,命,命令中,“,“-Q,”,”是不,输,输出无,关,关的信,息,息。注,意,意不要,执,执行命,令,令cvs update,r1.2test.c 这,样,样会出,现,现问题。,your_client$cvs commit,m,“,“revertedtorevision1.2”test.c,cvsdiffr 1,.,.2r 1,.,.4test.c,结果可,以,以看出,两,两个版,本,本是否,相,相同,方法之,二,二,用,命,命令:,your_client$cvs update,j1.3,j1.2 test,.,.c,将1.3版本,与,与1.2版本,之,之间的,差,差异补,到,到1.3版本,上,上去。,your_client$cvs statustest.c,查看checkout出的1.3,版,版本的,状,状态(已经,在,在本地,修,修改),your_client$cvs commit,m,“,“revertedtorevision1.2”test.c,your_client$cvs diffr 1,.,.2test.c,在项目,中,中添加,新,新的目,录,录和文,件,件命令,:,:add,将工作,目,目录中,新,新加的,目,目录和,文,文件添,加,加到cvs库,中,中的方,法,法:,在工作,目,目录中,创,创建目,录,录和文,件,件后才,能,能进行,。,。,加文件,的,的第一,步,步:,your_client$cvs addnewfile,执行第,二,二步:,your_client$cvs commit,m,“,“added,”,”newfile,加目录,(,(不管,目,目录是,否,否为空,目,目录),只,只需一,步,步:,your_client$cvs addnewder,注意:,目,目录中,的,的文件,需,需要分,别,别加入,。,。,删除文,件,件命令,:,:remove,必须先,删,删除工,作,作目录,中,中的该,文,文件,,删,删除前,应,应该将,修,修改过,的,的本文,件,件提交,保,保存,,作,作为仓,库,库中的,新,新版本,。,。命令,如,如下:,第一步,:,:,your_client$rmoldfile,(,(该命,令,令不能,在,在windows上,执,执行),your_client$cvs removeoldfile,上两步,可,可以合,并,并:,your_client$cvs remove,foldfile,第二步,:,:your_client,$,$ cvscommit,m,“,“removed,”,” oldfile,大家可,以,以按步,骤,骤看一,下,下工作,目,目录cvs目,录,录下的Entries文件,有,有什么,变,变化。,对删除,的,的目录,因为cvs不,对,对目录,进,进行版,本,本控制,,,,所以,和,和删除,文,文件不,同,同,没,有,有一个,专,专门的,命,命令。,例,例如(,要,要删除,目,目录olddir),:,:,your_client$ls,-,-a,olddirtest,.,.ctest1.c test,.,.pc,your_client$cdolddir,your_client$ls,a,tmp,.,.ctmp1.c,以下是,删,删除目,录,录olddir的命,令,令:,your_client$cvs remove,ftmp.ctmp1.c,Your_client$cvscommit m “removed”tmp.ctmp1.c,your_client$cd,.,.,your_client$cvs update,P,your_client$cvsupdate,(所有,空,空目录,均,均从工,作,作目录,中,中删除,),),这时目,录,录olddir从工,作,作目录,中,中消失,注意:,此,此命令,不,不会将,库,库中新,添,添加的,目,目录取,到,到工作,目,目录中,,,,可执,行,行命令,:,:your_client,$,$ cvsupdate,-,-d,清除、,删,删除,文件和,目,目录名,的,的更改,因为cvs对,文,文件和,目,目录的,更,更名缺,乏,乏支持,,,,所以,必,必须中,其,其他方,法,法处理,,,,该文,件,件makefile,名,名的方,法,法一为,:,:,your_client$mvmakefile makefile.mk,your_client$cvs remove,fmakefile,your_client$cvs commit,m,“,“removedforrenaming,”,” makefile,your_client$cvs addmakefile.mk,your_client$cvs commit,m,“,“addedasarenamed versionofmakefile,”,”makefile.mk,方法二,(,(在服,务,务器上,直,直接操,作,作):,rootcvshost /root$cd,/,/cvsap,/,/src/master/test,rootcvshost /root$mvmakefile,vmakefile.mk,v,这种改,法,法的危,险,险:确,保,保没人,访,访问该,文,文件;,不,不知道,什,什么时,候,候执行,的,的修改,;,;无法,获,获得文,件,件在改,名,名前的,旧,旧版本,。,。,改目录,名,名的方,法,法也有,两,两种:,方法一,:,:在工,作,作目录,中,中创建,新,新目录,,,,将旧,目,目录下,除,除cvs目录,外,外的所,有,有文件,和,和子目,录,录移到,新,新目录,下,下。然,后,后删除,旧,旧文件,,,,在添,加,加新目,录,录,并,添,添加文,件,件。,your_client$mkdirnewdir,your_client$mvoldnew/*newdir,your_client$cdolddir,your_client$cvsremove,f,*,*,your_client$cvsupdate,P,your_client$cvsupdate,your_client$cd,.,.,your_client$cvsaddnewdir,方法二,:,:rootcvshost /root$cd,/,/cvsap,/,/src/master/test,rootcvshost /root$mvolddir newdir,这种方,法,法是禁,止,止任何,人,人访问,数,数据库,,,,且方,法,法危险,,,,步主,张,张使用,。,。,1.5,测,测,试,试环境,进入测,试,试环境,步,步骤:,在个人,的,的pc,机,机上启,动,动linux,或,或windows操,作,作系统,,,,配置,好,好客户,端,端。在linux系,统,统中也,可,可以用startx,进,进入画,面,面操作,系,系统,,而,而后用,自,自带的,终,终端操,作,作命令,。,。在windows,系,系统中,直,直接启,动,动WinCVS即可,。,。,服务器,的,的IP,地,地址:10.40.52.64。,服,服务器,中,中cvs用户,为,为du,_,_cloud,/,/du,_,_cloud,(,(管理,用,用户),usera,b,c,/,/usera,b,c,为,为开发,用,用户。,可以按,照,照前面,讲,讲的命,令,令去进,行,行练习,。,。,1.6CVS,的,的高级,主,主题版,本,本标签,和,和版本,分,分支,1.6,.,.1版,本,本,在配置,管,管理的,语,语境里,,,,版本,的,的概念,应,应该是revision,,而,而不是version。,版本的,编,编号可,以,以系统,自,自己编,,,,也可,以,以用户,自,自定义,版,版本号,。,。在系,统,统自己,编,编号时,,,,如果,项,项目中,添,添加新,文,文件,,该,该文件,不,不版本,号,号码的,第,第一位,与,与本目,录,录下版,本,本号码,最,最高的,文,文件第,一,一位相,同,同,第,二,二位是1。如,,,,一个,目,目录下,有,有三个,文,文件其,版,版本号,为,为1.5、2,.,.8、5.14,那,么,么新添,加,加的文,件,件版本,号,号应该,是,是5.1。如,果,果用户,自,自己给,某,某个版,本,本编号,,,,则这,个,个版本,编,编号必,须,须大于,项,项目中,的,的所有,文,文件的,版,版本号,。,。,1.6,.,.2,版,版本标,签,签(tag),版本标,签,签是符,号,号化的,版,版本号,码,码,具,有,有直观,、,、易于,记,记忆和,管,管理的,优,优点。,用,用于阶,段,段式(,里,里程碑,),)的版,本,本标记,。,。是连,接,接项目,中,中不同,文,文件不,同,同版本,的,的手段,。,。,例子:,通,通过WinCVS展,示,示版本,标,标签,标签的,设,设定,Du,_,_cloud,linuxtest,$,$ cvstagrel_1,_,_0_1 test,.,.c,注意:,很,很少给,单,单个文,件,件设标,签,签。,给目录,下,下所有,文,文件贴,标,标签:,Du,_,_cloud,linuxtest,$,$ cvstagbaseline,_,_1,标签的,删,删除、,重,重命名,和,和移动,删除:,Du,_,_cloud,linuxtest,$,$ cvstag,dbaseline,_,_1,重命名,:,:,Du,_,_cloud,linuxtest,$,$ cvstag,rbaseline,_,_1baseline_2,Du,_,_cloud,linuxtest,$,$ cvstag,dbaseline,_,_1,移动:,Du,_,_cloud,linuxtest,$,$ cvstag,r1.6 F baseline_1test.c,我们将test.c,的,的标签,从,从旧版,本,本1.5移到,新,新版本1.6,上,上。,标签的,命,命名,baseline_1-20030623,Release-20030522,Nightly-20030321,等。,标签的,查,查看,Du,_,_cloud,linuxtest,$,$ cvsstatus,vtest.c,Du,_,_cloud,linuxtest,$,$ cvsstatus,v,确定标,签,签要贴,的,的位置,Du,_,_cloud,linuxtest,$,$ cvstag,cbaseline,_,_1,贴标签,时,时注意,不,不要遗,忘,忘已经,修,修改但,没,没有提,交,交的文,件,件。,按约定,贴,贴标签,(,(仓库,中,中直接,给,给模块,加,加标签,),),按日期,贴,贴标签,(,(下例,是,是将模,块,块test的,所,所有文,件,件在20030624号0,时,时0分,前,前提交,的,的最后,一,一个版,本,本贴上,标,标签:,Du,_,_cloud,linuxtest,$,$ cvsrtag D 20030624nightly_20030624 test,按版本,号,号、已,经,经有的,标,标签贴,新,新标签,Du,_,_cloud,linuxtest,$,$ cvsrtag r nightly,_,_20030624,(,(老tag)rel_2,_,_1test(贴,新,新标签,但,但test下,新,新加程,序,序不挂,到,到标签,上,上),Du,_,_cloud,linuxtest,$,$ cvsrtag f nightly,_,_20030624test(,将,将test下,新,新加的,程,程序的,最,最新版,本,本强制,的,的挂到nightly_20030624上),Du,_,_cloud,linuxtest,$,$ cvsrtag r 1,.,.5rel,_,_2_1 test,Du,_,_cloud,linuxtest,$,$ cvsrtag f 1,.,.5rel,_,_2_1 test,附着性,标,标签,1)引,起,起附着,性,性标签,的,的命令,有,有:,cvsupdate r tag(,标,标签号,),),cvsupdate D date,(,(更新,到,到不晚,于,于date的,最,最新版,本,本),cvsupdate r x,.,.y(,版,版本号,),) test,.,.c,cvscheckout,rtag(标,签,签号),cvscheckout,Ddate,(,(date之,前,前最近,的,的版本,),),cvscheckout,rx.y test,.,.c,2)附,着,着性标,签,签在版,本,本分支,中,中的使,用,用:保,持,持版本,分,分支号,与,与标签,有,有直接,的,的关系,,,,也就,是,是标签,附,附着在,分,分支号,上,上。,3)保,持,持某些,文,文件的,不,不改动,:,:,只要对,几,几个文,件,件执行,了,了cvs update,r,命,命令,,如,如:cvsupdate,r1.28ax.c则版,本,本1.28就,会,会成为,附,附着性,标,标签,,以,以后执,行,行cvs update,命,命令时,这,这个文,件,件不会,更,更新,,直,直到解,除,除附着,性,性为止,。,。,另外,,还,还有1,),)中的,命,命令情,况,况相同,。,。,4)解,除,除附着,性,性标签,:,:,Du,_,_cloud,linuxtest,$,$ cvsupdate,Atest.c,该命令,解,解除附,着,着性标,签,签,将checkout主,干,干的最,新,新版本,并,并放本,地,地。,1.6,.,.3,如,如何获,得,得某个,特,特定的,版,版本,根据版,本,本号码,或,或版本,标,标签获,得,得,Du,_,_cloud,linuxtest,$,$ cvsupdate,r1.1 test,.,.c,获得某,一,一版本,标,标签的,整,整个软,件,件的源,代,代码:,Du,_,_cloud,linuxtest,$,$ cvscheckout,rbaseline_1 test,或者跳,转,转到某,个,个版本,标,标签的,版,版本(,已,已经有,工,工作拷,贝,贝的情,况,况下),Du,_,_cloud,linuxtest,$,$ cvsupdate,rbaseline,_,_1,根据时,间,间获得,特,特定版,本,本(更,新,新到不,晚,晚于date,的,的最新,版,版本),Du,_,_cloud,linuxtest,$,$ cvsupdate,D,“,“2002,-,-05,-,-08,”,”,Du,_,_cloud,linuxtest,$,$ cvsupdate,D,“,“2002,-,-05,-,-0823,:,:59,:,:59,”,”,Du,_,_cloud,linuxtest,$,$ cvsupdate,D,“,“2002,-,-05,-,-09,”,”,Du,_,_cloud,linuxtest,$,$ cvsupdate,D,“,“2002,-,-05,-,-0823,:,:59,:,:59GMT”(,让,让用户,使,使用GMT时,间,间),如果要,取,取回旧,版,版本修,改,改,而,不,不是基,于,于最新,版,版本,,修,修改后,提,提交形,成,成最新,版,版本,,方,方法有,三,三:,1)逐,个,个文件,处,处理:,Du,_,_cloud,linuxtest,$,$ cvsupdate,p,D,“,“2003,-,-05,-,-18, test,.,.c,test.c,方法二,:,:一次,性,性处理,所,所有文,件,件,Du,_,_cloud,linuxtest,$,$ cvsupdate,A,Du,_,_cloud,linuxtest,$,$ cvsexport,D,“,“2003,-,-05,-,-18,”,” test,Du,_,_cloud,linuxtest,$,$ cp r test,/,/home,/,/du,_,_cloud,*将test,.,.c的baseline_1标签,移,移动从,旧,旧版本1.5,到,到新版,本,本1.6上:,cvstag r 1,.,.6,Fbaseline_1 test,.,.c,1.6,.,.4,版,版本分,支,支,Du,_,_cloud,linuxtest,$,$ cvsco,dtest_brh,rbase_1test,Du,_,_cloud,linuxtest_brh,$cvstag b base,_,_1_brh,Du,_,_cloud,linuxtest_brh,$cvsup,rbase_1_brh(,可,可以在,分,分支中,修,修改程,序,序如:test.c,),),Du,_,_cloud,linuxtest_brh,$cvsci,m,“,“fixed bugno111,”,” test,.,.c(,提,提交到,分,分支上,),),Du,_,_cloud,linuxtest,$,$ cvsup,jbase_1,_,_brh(分,支,支版本,合,合并到,主,主干版,本,本中),Du,_,_cloud,linuxtest,$,$ cvsci,m,“,“merged frombranch:base,_,_1_brh,”,”,Cvs,输,输出(export,),)-,-,-发布,代,代码(,去,去出没,有,有CVS痕迹,的,的代码,),),cvsexport r rel_1(主,干,干上tag号,),) d test,_,_release1test,cvsexport r brh_tag,_,_brh(分,支,支名称,),) d shanghai_releasetest,Du,_,_cloud,linuxtest,$,$ tar,cvf test,_,_release1,.,.tar test,_,_release1,Du,_,_cloud,linuxtest,$,$ gziptest_release1.tar,1.6,.,.5cvs与二,进,进制文,件,件,重要的,二,二进制,文,文件也,需,需要进,行,行版本,管,管理。,如,如:web应,用,用的大,量,量图片,、,、控件,、,、动态,连,连接库,、,、unix不,同,同操作,系,系统下,的,的编译,器,器、函,数,数库等,等,等。,CVS,在,在处理,文,文本类,型,型的文,件,件,包,括,括各种,源,源代码,文,文件、HTML、XML文,件,件等。CVS,对,对文本,类,类型的,文,文件进,行,行版本,管,管理时,,,,会对,文,文件做,一,一些秘,密,密的处,理,理,在,客,客户端,和,和UNIX仓,库,库之间,,,,CVS会自,动,动进行,回,回车、,换,换行替,换,换和关,键,键字扩,展,展处理,。,。,CVS,对,对二进,制,制文件,管,管理的,不,不好,,和,和ClearCase相比,,,,ClearCase具有,文,文件类,型,型,可,以,以进行,二,二进制,文,文件的,比,比较,,但,但是ClearCase也,要,要尽量,避,避免二,进,进制文,件,件的分,支,支和合,并,并。CVS无,法,法进行,二,二进制,文,文件的,合,合并和,分,分支,,不,不过在,实,实际应,用,用中二,进,进制文,件,件的合,并,并和分,支,支是没,意,意义的,。,。,CVS,对,对二进,制,制文件,的,的管理,和,和保存,:,:,1)在CVS,系,系统中,保,保存二,进,进制文,件,件,应,该,该使用,“,“-kb”选,项,项来禁,止,止CVS对文,件,件进行,回,回车、,换,换行替,换,换和关,键,键字扩,展,展的加,工,工。这,个,个选项,只,只需要,在,在cvs add,命,命令中,使,使用,,本,本选项,是,是一个,附,附着性,选,选项(,如,如果没,有,有附着,性,性每次,执,执行cvs命,令,令时都,需,需要这,个,个选项,),)。,如:cvsadd,kb binfile,cvscommit m “addedbinfile”binfile,注意:,二,二进制,文,文件是,原,原封不,动,动的保,存,存在仓,库,库中,,不,不能按,照,照增量,方,方式保,存,存两个,版,版本的,差,差异,,而,而是累,加,加。,2)恢,复,复二进,制,制版本,,,,如果,忘,忘记使,用,用“-kb”,选,选项,,添,添加了,二,二进制,文,文件并,提,提交了,仓,仓库,,库,库在UNIX,/,/Linux,平,平台上,可,可以通,过,过以下,命,命令恢,复,复:,cvsadmin,kb binfile,(,(反扩,展,展),cvsupdate A binfile,(,(工作,拷,拷贝中,的,的文件,恢,恢复二,进,进制),如果库,在,在windows平,台,台上只,能,能手工,处,处理。,CVS,识,识别二,进,进制文,件,件:cvs中,使,使用一,种,种简单,的,的技术,来,来辨别,二,二进制,文,文件,根,根据扩,展,展名。,但,但需要,进,进行配,置,置,配,置,置文件,在,在服务,器,器的/cvsap/src,/,/master/CVSROOT,目录下,的,的文件cvswrappers。,首,首先执,行,行:,cvsco,/,/cvsap/src/master,/,/CVSROOT/cvswrappers,打开该,文,文件,,如,如在该,文,文件的,末,末尾加,:,:,*.gif,k,-b,*.jpg,k,-b,*.bmp,k,-b,*.mpp,k,-b,*.xls,k,-b,*.ppt,k,-b,再执行,:,:,cvsci,m,“,“add7 binaryfile types”,/,/c
展开阅读全文