软件配置管理(SCM)相关概念_第1页
软件配置管理(SCM)相关概念_第2页
软件配置管理(SCM)相关概念_第3页
软件配置管理(SCM)相关概念_第4页
软件配置管理(SCM)相关概念_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1软件配置管理(SCM)相关概念,9.1.1版本管理不同产品的简单介绍配置管理软件分类:软件的版本管理(CVS是软件版本管理的工具)构件管理缺陷和跟踪管理产品介绍:1)高端产品如:RationalclearCase2)中端产品如:PVCS(pvcsversionmanager,pvcstracker)、Perforce,3)低端产品vss,1.2CVS概述,cvs是什么cvs是ConcurrentVersionsSystem的缩写。是强大而复杂的现代版本控制系统。cvs的特点免费:作为开放源代码的世界杰作,CVS是免费的。在中国,北京国联捷讯信息技术有限公司()为需要CVS技术支持的公司提供咨询。跨平台:CVS支持所有的操作系统,而且作为典型的客户/服务器模式的软件,CVS支持跨平台开发,cvs可以用在AIX、HPUX、Solaris、SUNOS、Linux、Windows,等不同的平台上开发应用,而共用一个CVS服务器。强大的分布式开发支持:CVS一直以支持分布式开发作为其基本特征。支持并行开发:允许多个开发人员对同一个文件进行开发工作,并对多个开发者的工作进行整合。强大的可塑性:不论是一个源代码组成的项目开发管理,还是代码量超过几百兆的项目,均管理自如。触发器及定制功能:这种功能帮助开发者将CVS和变动/跟踪系统紧密集成,以形成完整的软件配置管理系统(SCM)。,1.3CVS的安装和配置,在unix/linux平台上安装CVS服务器安装是超级用户执行的。假设选择一台Linux服务器,假设主机名为hostcvs。在cvs权威网站上下载包cvs-1.11.1p1.tar.gz(在linux中可能已经包含后CVS)。运行:roothostcvs/root$gzipdvfcvs-1.11.1p1.tar.gzroothostcvs/root$tarxvfcvs-1.11.1p1.tar进入目录cvs-1.11.1p1,运行:roothostcvs/root$./configureroothostcvs/root$makeroothostcvs/root$makeinstall,如果未报错误,则CVS服务器安装OK了。whereiscvs指定CVS仓库cvs仓库(Repository)是保存软件资源的设备,可以根据需要选择一目录作为库的位置,如,/cvsap,用超级用户建相应目录。mkdir/cvssrcmkdir/cvssrc/masterCVS服务器的初始化在确定CVS仓库位置后,就可以初始化CVS服务器。在初始化的过程中CVS创建其文件系统,并产生原始内容。在目录/cvsap目录下,以超级用户身份在提示符下执行:,roothostcvs/root$roothostcvs/root$cvsd/cvssrc/masterinit其中的目录project为项目源代码的资源目录。执行命令:roothostcvs/root$ls/cvssrc/masterCVSROOTroothostcvs/root$lsa/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管理员帐号到cvsadmin4)添加CVS普通用户到cvsuser5)让cvs管理员拥有对配置目录及其下文件的读写权限,同时给cvs的普通用户对配置目录及其下文件的读权限。rootcvshost/root$chgrpRcvsadmin/cvsap/src/master/CVSROOTrootcvshost/root$chmodR064/cvsap/src/master/CVSROOT6)给cvs普通用户对目录/cvsap/src/master/project的读写权限rootcvshost/root$chgrpRcvsuser/cvsap/src/master/projectrootcvshost/root$chmodR060/cvsap/src/master/project,CVS的口令服务器CVS口令服务器配置的目的是使cvs用户的远程计算机能访问CVS服务器。其方法分两步:以超级用户在hostcvs服务器上的/etc/services的文件中添加一行:cvspserver2401/tcp。最简单的方法是执行命令:echocvspserver2401/tcp/etc/services。注意:端口号2401不要重。这种方式是IBMUNIX系统。如果使用的是Redhat6.2及以前的版本或使用inetd超级服务器的UNIX版本,用超级用户在/etc/inetd.conf文件中添加一行,加在末尾:,cvspserverstreamtcpnowaitroot/usr/local/bin/cvscvsfallowroot=/cvsworkpserver。如果是Redhat7.1或其他新版本的Linux,则用超级用户身份打开/etc/xinetd.conf文件,并在文件中添加:servicecvspserverport=2401socket_type=streamwait=nouser=rootserver=/usr/bin/cvsserver_args=-f-allow-root=/cvssrc/masterpserverbind=本机器的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/xinetdrestart至此,CVS服务器安装和配置工作完成。,如果是HPUNIX则启动超级口令服务器的方法为:psef|grepinetd找出inetd进程的进程号killHUP让inetd进程重新读入配置文件使得CVS服务生效测试CVS口令服务器在cvshos服务器上,执行如下命令:rootcvshost/root$telnetlocalhost2401,客户端的安装和配置介绍CVSROOT环境变量设置格式:(19页)客户端的Unix/linux的安装和CVS服务器安装过程相同,这里不再赘述。CVSforunix/linux客户端的永久配置方法为:sh/ksh,用编辑器打开$HOME/.bash_profile文件添加:CVSROOT=:pserver:cloud4:/src/masterexportCVSROOTcsh,用编辑器打开$HOME/.cshrc文件,在文件的末尾添加:setenvCVSROOT:pserver:public:/cvssrc/master其中的public为客户端的用户在服务器端的帐户/用户名。,CVSforWinCVS的永久配置为:在窗口中选择Admin-Preferences并在General选项卡中输入,如图。关于unix/linux客户端的临时配置:sh/bash:testlinuxtest$exportCVSROOT=:pserver:public:/cvsap/src/mastercsh:testlinuxtest$setenvCVSROOT:pserver:public:/cvsap/src/master,测试远程访问CVSforunix/linux:testlinuxtest$cvslogincvspassword:WinCVS:AdminLogin输入口令即可。在VisualStudio中集成CVS(23),1.4CVS工作原理及基本命令,仓库的概念已经描述,在CVS库中CVS以一种特殊的文件格式(RCS)来保存这些资源。仓库按照目录和文件结构组织。仓库中每个目录对应一个项目,如:和cvsap/src/master在同一层次的目录除CVSROOT外,其他每个目录都应该是不同的项目。其保存了各个版本的文件,并记录了版本的修改信息。统一文件的不同版本之间具有派生关系,在版本库中只存储不同版本间的改动,从而节约空间。(29页)工作拷贝是指每个开发人员在开发过程中拥有一个独立于其他开发人员的整个软件项目的全部代码的拷贝,在客户端,它和主拷贝(仓库)构成了CVS客户/服务器模式。工作拷贝的每个目录中有一个CVS目录,其下的文件是cvs管理控制文件。(31页),cvs命令的格式:cvscvs-optioncommandcommand-option如:your_client$cvsQchecktest可以用命令:cvs-help-commands来查看cvs的命令。在winCVS中在commandlinesetting菜单中输入命令即可。Init命令(初始化版本库)如:cvsd/cvsap/src/masterinitimport命令从客户端登陆服务器。在客户端有目录,如,test,其中有源文件和子目录,将目录test下的内容加入服务器作为一个项目(如,project,test),即一个baseline。命令为:,your_client$cdtestyour_client$cvslogin(loggingintoyourserver)cvspassword*(你的服务器端cvs帐户口令)your_client$cvsimportm“initialimport”testSSEstart该命令将当前目录(包含子目录)下的所有内容,都放进CVS系统中,其中,-m表示在命令中要加注释内容test为该项目名称SSE为厂商标识start为版本标记没有冲突表示创建新的项目仓库成功。在WinCVS中可以在菜单中实现。,checkout命令checkout命令是将我们选定的CVS服务器上指定仓库中的一个项目代码取到本地的工作目录下。如果要将仓库中的test项目的代码取到本地个人目录下,执行:your_client$cd$HOMEyour_client$cvscheckouttest项目代码会保存在个人目录$HOME/test下供你个人开发或修改。当你打开checkout出的源代码所在的目录,会发现代码中的每个目录(包括每个子目录)中均有名为CVS的子目录。这些目录并不属于代码,它是CVS系统使用的目录,其中保存着CVS管理文件。这是工作拷贝与普通目录文件的不同。这些文件对于CVS很重要。所以不要随便的改变或移动、删除这些CVS目录及其中的文件。解释CVS子目录中的文件(43页),注意:这里的test为用户的目标目录。根据用户client端的配置:CVSROOT:pserver:public:/cvsap/src/master,命令cvscheckouttest从服务器的库中,即将目录/cvsap/src/master/test下的所以内容包括子目录检出到客户机的$HOME/test目录下,同时生成目录test。当然,也可以检出单个文件。diff命令CVS能将你工作的拷贝中的源代码文件与仓库中的版本进行比较,发现差异。(45页)如:your_client$cvsdifftest.cyour_client$cvsdiffctest.c该命令能看到对照的结果。应该注意的是显示内容中的“+”表示添加行,“!”表示修改,其余的显示内容和UNIX系统中的diff命令显示相仿。,your_client$cvsdiffr1.1r2.1test.c该命令比较库中两个不同版本文件差异。commit命令提交操作会改变仓库内容。提交之后,代码成为整个系统的一个部分了。由于软件的复杂性,需要对提交进行控制。所以在提交时应当遵循一定的流程,进行一定的软件质量保证(SQA)工作,这些工作包括评审(review)、提交报告等。提交源代码的命令为:your_client$cvscommitm“addstringvariableandheaderstring.h”test.c注意:如果输出类似以下内容的结果即提交失败,此时应该用update命令更新个人工作目录下的源代码。,cvscommit:Up-to-datecheckfailedfortest.ccvscommitaborted:correctaboveerrorsfirst!这里的“-m”后面的是CVS注释。CVS强制要求用户在任何一次提交、导入等操作时加入注释。养成注释的习惯非常重要。CVS支持中文注释。如果不在命令行中加入注释,那么CVS将自动启动默认编辑器,请用户输入注释,只有用户保存注释并退出这个编辑器之后,提交才能成功。update命令该命令既可针对单个文件,也可针对一个目录,或者整个项目。,更新单个文件your_client$cvsupdatetest.c执行上述命令后,用户当前工作目录中的文件test.c的内容与仓库中的最新版本完全相同了,因为在你checkout该文件后,在修改该文件的过程中可能他人已经修改并提交了该文件,即你的修改不是基于库中最新版本。所以,你必须先update,再提交该文件才能提交成功。不过可能有冲突要解决,原因是对同一个文件的同一处代码进行了不同的修改。解决冲突的办法就是通过编辑文件,修改发生冲突的部分。对于逻辑问题CVS无法发现,所以版本冲突的处理应该与软件开发中的需要相结合。另外,可以通过more命令看以下合并后的文件,如,moretest.c。,更新整个项目your_client$cvsupdate执行上述命令后,用户当前工作拷贝中属于本项目的所有文件与仓库中的最新版本完全相同了。需要注意其警告信息。log命令每次提交一个CVS操作时,必须填写日志信息,否则拒绝提交。日志信息可以在命令行中加“-m”参数表示。如果日志过长,可以不用“-m”参数而直接运行,CVS会弹出一个编辑器,让用户在编辑器中输入注释信息。CVS对注释信息没有长度限制。这种日志信息是CVS进行软件变化跟踪的一种机制。,每个版本均有日志信息。用户可以查看某个文件的全部历史日志记录,也可以指定查看某个版本或某个日期的日志记录。查看日志信息使用命令:cvslog(53页)。查看文件test.c全部日志,使用命令:your_client$cvslogtest.c查看test.c文件1.2版本的日志,使用命令:your_client$cvslogr1.2test.c再如:cvslogd“2002-06-01test.c,方法二:一次性处理所有文件Du_cloudlinuxtest$cvsupdateADu_cloudlinuxtest$cvsexportD“2003-05-18”testDu_cloudlinuxtest$cprtest/home/du_cloud*将test.c的baseline_1标签移动从旧版本1.5到新版本1.6上:cvstagr1.6Fbaseline_1test.c1.6.4版本分支Du_cloudlinuxtest$cvscodtest_brhrbase_1testDu_cloudlinuxtest_brh$cvstagbbase_1_brhDu_cloudlinuxtest_brh$cvsuprbase_1_brh(可以在分支中修改程序如:test.c)Du_cloudlinuxtest_brh$cvscim“fixedbugno111”test.c(提交到分支上)Du_cloudlinuxtest$cvsupjbase_1_brh(分支版本合并到主干版本中)Du_cloudlinuxtest$cvscim“mergedfrombranch:base_1_brh”,Cvs输出(export)-发布代码(去出没有CVS痕迹的代码)cvsexportrrel_1(主干上tag号)dtest_release1testcvsexportrbrh_tag_brh(分支名称)dshanghai_releasetestDu_cloudlinuxtest$tarcvftest_release1.tartest_release1Du_cloudlinuxtest$gziptest_release1.tar1.6.5cvs与二进制文件重要的二进制文件也需要进行版本管理。如:web应用的大量图片、控件、动态连接库、unix不同操作系统下的编译器、函数库等等。CVS在处理文本类型的文件,包括各种源代码文件、HTML、XML文件等。CVS对文本类型的文件进行版本管理时,会对文件做一些秘密的处理,在客户端和UNIX仓库之间,CVS会自动进行回车、换行替换和关键字扩展处理。,CVS对二进制文件管理的不好,和ClearCase相比,ClearCase具有文件类型,可以进行二进制文件的比较,但是ClearCase也要尽量避免二进制文件的分支和合并。CVS无法进行二进制文件的合并和分支,不过在实际应用中二进制文件的合并和分支是没意义的。CVS对二进制文件的管理和保存:1)在CVS系统中保存二进制文件,应该使用“-kb”选项来禁止CVS对文件进行回车、换行替换和关键字扩展的加工。这个选项只需要在cvsadd命令中使用,本选项是一个附着性选项(如果没有附着性每次执行cvs命令时都需要这个选项)。如:cvsaddkbbinfilecvscommitm“addedbinfile”binfile注意:二进制文件是原封不动的保存在仓库中,不能按照增量方式保存两个版本的差异,而是累加。2)恢复二进制版本,如果忘记使用“-kb”选项,添加了二进制文件并提交了仓库,库在UNIX/Linux平台上可以通过以下命令恢复:cvsadminkbbinfile(反扩展)cvsupdateAbinfile(工作拷贝中的文件恢复二进制)如果库在windows平台上只能手工处理。CVS识别二进制文件:cvs中使用一种简单的技术来辨别二进制文件根据扩展名。但需要进行配置,配置文件在服务器的/cvsap/src/master/CVSROOT,目录下的文件cvswrappers。首先执行:cvsco/cvsap/src/master/CVSROOT/cvswrappers打开该文件,如在该文件的末尾加:*.gifk-b*.jpgk-b*.bmpk-b*.mppk-b*.xlsk-b*.pptk-b再执行:cvscim“add7binaryfiletypes”/cvsap/src/master/CVSROOT/cvswrappers如果提交成功,那么以后对上述扩展名的二进制文件入库等处理不用再添加“-kb”选项了。9.6.6cvs仓库的备份和移动在备份时cvs仓库不能处于接受用户命令状态,有两种方法做到这一点:1)禁止任何用户使用cvs,保证所有之前的命令执行完备。,2)杀掉inetd/xinetd超级服务进程。之后,可以用一些备份工具或来进行备份。仓库的移动,可执行两条命令:tarcvfcvsrepository.tar/cvsap/src/masterg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论