软件配置管理cvs介绍
- 格式:ppt
- 大小:217.00 KB
- 文档页数:48
VSS和CVS比较1.软件配置管理基础随着计算机应用范围的日益广泛,应用软件的规模及复杂度日益广泛深入,应用软件的规模和复杂程度日趋大型化,复杂化,这就导致软件开发的方式越来越强调团队的协作开发,而在这种开发方式下,会遇到很多问题,例如:需要将整个软件的版本恢复到以前的某一时间的状态,限制随意修改程序,或者控制某一程序在同一时间内只能一个开发人员修改等等。
为了解决这些问题,提高软件产品和软件项目的质量及软件开发过程中的管理水平,更好地为以后的软件开发工作提供有效的服务,必须采用先进的管理手段,实现软件产品和软件项目源码的科学管理。
软件配置管理工具应运而生。
2.软件配置管理工具软件配置管理工具有很多,例如:Starteam、ClearCase、VSS和CVS等。
Starteam和ClearCase更适合庞大的团队和项目,并且价格不菲,所以并不常用。
目前使用比较广泛的是VSS和CVS。
两者在使用上有各自的优势和不足。
VSS的全名是VisualSourceSafe,是微软公司开发的VisualStudio开发套件中的软件配置管理部分,有非常好的技术支持和非常详尽的技术文挡。
VSS适合在局域网范围内,以Windows平台为主的中、小项目,以文件管理为主要功能,使用方便,学习成本低,对服务器仅需要快速大容量的存储器也是它的优势。
CVS的全名是ConcurrentVersionSystem,是一种可以并发的版本控制系统。
它是一个开源项目,可以直接从网站下载最新的原代码。
CVS可以满足局域网和广域不同的网络条件,提供不同级别安全性选择,在一台专门的服务器配合下,客户可以使用任何平台开发项目。
CVS本身是在unix系统上开发的,在unix下提供的是命令行使用模式。
在Windows平台下你可以选择用CVSNT搭建服务器,用WinCvs作为客户端。
CVS对于已经完成了开发过程进入项目维护阶段,或者进入项目升级阶段的项目,可提供完善的软件配置管理的支持,不过在学习和操作上学习成本比较高。
建立软件配置管理环境(cvs)1.安装CVS服务器1.1windows环境1.1.1 下载由下载到CVSNT的安装程序。
1.1.2 安装在服务器端执行下载得到的安装程序,进行CVSNT安装。
Windows XP and 2003注意:某些系统的WMI 服务可能会引起访问拒绝错误。
为了避免这种情况的发生,安装前必须停止WMI服务,安装完成后重新启动WMI服务。
Start Screen:License Agreement:Install Directory Selection:Antivirus Software Warning:Install Component Selection Screen:Shortcut Folder Selection Screen:Task Selection Screen:Ready To Install!:Install Progress:Installation Done!:注意:如果遇到有关genkey.exe错误,并且安装成功,但是SSL key 没有生成;因此sserver protocol 不能正确工作。
1.1.3 系统重新启动第一次安装CVSNT后必须重新启动系统,否则当你建库时将会发生“Repository initialization failed”错误。
1.1.4 创建CVS目录在CVS服务器创建两个目录,例如:c:\cvsrepo和c:\cvstemp。
目录必须建立在NTFS盘上。
C:\cvstemp 由SYSTEM的所有用户控制。
Cvstemp目录不能建立在c:\WINNT\Temp或c:\Documents and Settings。
在server 创建一个名称为“CVSUsers”的组,并添加属于这个组的所有CVS 用户。
1.1.5 CVSNT控制面板配置打开控制面板并找到CVSNT applet (绿色的鱼):启动下列插图applet:注意:如果发生问题可能的原因是系统的一些dll丢失。
问:请问CVS是什么啊?答:CVS是一个很老的版本控制的工具软件了。
想入门的话推荐一个简单教程:(版权归原作者哦,你可以去百度一下原文。
)-----------------------------------------------------CVS简单教程------------------------------现在服务器和客户端都设置好了,那么怎么用呢,我在这里写一个最简单的(估计也是最常用的)命令介绍:首先,建立一个新的CVS项目,一般我们都已经有一些项目文件了,这样我们可以用下面步骤生成一个新的CVS项目:1. 进入到你的已有项目的目录,比如叫cvstest:$cd cvstest2. 运行命令:$cvs import -m "this is a cvstest project" cvstest v_0_0_1 start说明:import 是cvs的命令之一,表示向cvs仓库输入项目文件.-m参数后面的字串是描述文本,随便写些有意义的东西,如果不加-m 参数,那么cvs会自动运行一个编辑器(一般是vi,但是可以通过修改环境变量EDITOR来改成你喜欢用的编辑器.)让你输入信息,cvstest 是项目名称(实际上是仓库名,在CVS服务器上会存储在以这个名字命名的仓库里.)v_0_0_1是这个分支的总标记.没啥用(或曰不常用.)start 是每次import 标识文件的输入层次的标记,没啥用.这样我们就建立了一个CVS仓库了,然后,我们可以把这个测试项目的文件删除.试验一下如何从仓库获取文件.这里我假设上面的所有客户端工作你都已经做过了.运行下面的命令:$cvs checkout cvstest从仓库中检索出cvstest项目的源文件.如果你已经做过一次checkout了,那么不需要重新checkout,只需要进入cvstest项目的目录,更新一把就行了:$cd cvstest$cvs update一下即可.又或者你不想直接更新,只是想看看有没有更新的东西,那么:$cvs status这时后会打印出一长串状态报告(你可能需要用类似less这样的命令分页显示,或者定向到一个输出文件里慢慢看.),对项目中的每个文件有一份状态报告,类似这样:=========================================================== ========File: foo.c Status: Up-to-dateWorking revision: 1.1.1.1 'Some Date'Repository revision: 1.2 /home/cvsroot/cvstest/foo.c,vSticky Tag: (none)Sticky Date: (none)Sticky Options: (none)这里最重要的就是Status 栏,这里总共可能有四种状态:Up-to-date:表明你要到的文件是最新的.Locally Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新.Needing Patch:表明有个哥们已经修改过该文件并且已经提交了!你的版本比仓库里的旧.Needs Merge:表明你曾经修改过该文件,但是偏偏有个不识相的也修改了这个文件,而且还提交给仓库了!如果你只是想保持软件的同步的话(象我),那么上面的东西就足够用了.可是如果多人协作开发项目的话,可就不是了这么简单了.当你参加项目,维护文件时,就需要更多命令,比如说你我都是某nasdaq 项目的开发人员:1,你对某个文件做了修改,比如说改了ceo.c,加了一行程序:printf("where can I find VC to cheat!");改完之后你要把修改提交给仓库,用命令:$cvs commit -m "add a complain" ceo.c或者就是:$cvs commit -m "worry about money"让cvs帮你检查哪个文件需要提交.2,当我开始干活的时候,可能我先:$cvs status一把,这时候我会看到:=========================================================== =======File: ceo.c Status: Needing PatchWorking revision: 1.1.1.1 'Some Date'Repository revision: 1.2 /home/cvsroot/nastaq/ceo.c,vSticky Tag: (none)Sticky Date: (none)Sticky Options: (none)于是我知道有人改了ceo.c,于是我就:$cvs update ceo.c或者干脆:$cvs update把ceo.c这个文件更新为最新版本,然后再干活.然后提交.如果这天你修改了coo.c,加了一行puts("how about another kind of bragging?");并且提交了,但是这时候我已经$cvs status 过了,就是说我不知道你的修改.而我加了一行printf("You must shamelessly and seems knowingness to act as a coo");并且傻乎乎地提交:$cvs commit coo.c这时候,CVS会告诉我cvs commit: Examing .cvs server: Up-to-date check failed for 'coo.c'cvs [server aborted]: correct above error first!于是我知道有个狗屎在我修改文件的当口做了提交,于是我$cvs update这时cvs会报告:RCS file: /home/cvsroot/nasdaq/coo.c,vretrieving revision 1.1.1.1retrieving revision 1.2Merging differences between 1.1.1.1 and 1.2 into coo.crcsmerge: warning: conflicts during mergecvs update: conflicts found in coo.cC coo.c告诉你coo.c有版本冲突,于是我编辑coo.c,这时一般文件里看起来象这样: ...printf("You must shamelessly and seems knowingness to act as a coo");<<<<<<< foo.c=======...puts("how about another kind of bragging?");>>>>>>> 1.2...于是我把上面改成:printf("You must shamelessly and seems knowingness to act as a coo");puts("how about another kind of bragging?");然后$cvs commit -m "merged" coo.c于是下回你再更新的时候就有新的补钉要打...如此往复,直到完成所有修改.不过这里有一些要注意的地方就是删除程序,如果你删掉一行对你可能没有用的程序puts("to be honest"); 而我不想删除(因为我有用),而我不知情地直接:$cvs update了,那么我的这行程序也完蛋了,所以这里我们要注意所有开发人员的协调,千万不要乱删东西,大不了用#if 0#endif宏定义对括起来.实在要删东西,那最好先标记一个版本:$cvs tag v_0_0_1然后你可以发布并删除你自己的工作目录里这个版本的文件(注意:不是删除仓库里的.):$cvs release -d nasdaq然后你再生成一个新分支:$cvs rtag -b -r v_0_0_1 v_0_0_1_1 nasdaq然后再建立v_0_0_1_1的分支$cvs checkout -r v_0_0_1_1 nasdaq编辑并修改这个分支的文件,这样的做法比较好.不过要注意的是,新标记和新分支的建立最好由项目的管理人员负责,否则每个人都做一个分支,那么仓库就太乱了.因此,比较的开发人员之间的直接沟通是不能忽略的.一般来说,在互联网上的标准模式是有一个管理员(可能自己并不写程序),有一个邮递列表,大家都在邮递列表上交流看法和做各种决议.当形成决议之后,管理员做一个新版本的标记.以此循环.还有一些命令,比如要增加一个文件garbage_china_concept_stocks_list:$cvs add garbage_china_concept_stocks_list然后还要:$cvs commit garbage_china_concert_stocks_list看起来有点象数据库里的事务?的确是这样.CVS维护着一个本地的参考文件(在CVS/Entries里),这样提交的时候就可以一次地把所有改变放到服务器端,这样也更安全.同样,如果想删除文件bankrupted_web_site:$rm bankrupted_web_site$cvs remove bankrupted_web_site$cvs commit bankrupted_web_site3,一些小技巧:$Header$ 标记:把这个标记放在文件的任何地方都会被cvs 替换成最后修改的cvs 用户名,该文件当前版本号,最后修改时间,该文件的cvs 仓库路径,看起来象下面这个样子:// $Header: /home/cvsroot/simhost/simhost.cpp,v 1.2 2001/04/20 08:26:10 jqliu Exp $一般我们把它放在开头,这样对程序员修改文件非常便利,很多时候你只要看一眼开头就知道文件是否最新.$Id$标记:把这个标记放在文件的任何地方都会被cvs 替换成最后修改的cvs 用户名,该文件当前版本号,最后修改时间,该文件的cvs 仓库路径,看起来象下面这个样子:$Id: simhost.cpp,v 1.3 2001/04/24 02:27:36 simhost Exp $好了,上面所有的东西,估计就是我们用cvs时80%情况下用的命令和内容,包括文件的更新,提交,冲突的解决,分支的派生,增删文件等.实际上cvs的功能之强大,远远超出我在这里描述的内容,我这个”速成”也就管不了太多了,希望随着时间的推移,我们能够更加有效地使用CVS.也希望大家能够不断补充这篇文章,最后能够成为手册,而不仅仅是速成.当然,还要更多地参考别的文档.赞同。
CVS概述何谓CVSCVS(Concurrent Version System)是一种客户机/服务器系统,可以让开发人员将他们的项目存储在称为资源库的中央位置。
使用cvs客户机工具,开发人员可以对资源库的内容进行更改。
CVS 资源库会依次记录对每个文件所做的每个更改,并创建一个完整的项目开发进展历史。
开发人员可以请求特定源文件的旧版本、查看更改日志,并根据需要执行其它一些有用的任务。
什么是版本控制系统版本控制就是在项目中记录和读取变更的过程。
版本控制系统可以让你取回原有的旧版本来修正其缺陷或更新其功能,并可以让你分组开发,使项目得以多方面同时进行以及产生报告来显示项目中任意两个阶段之间的差异。
软件开发中为什么要用CVS软件业发展到现在,一个项目越来越大,多人协同工作对于一个项目越来越普遍。
在多人工作环境下,版本管理是一个重要的问题,没有好的版本控制和版本管理,大的工程无法顺利进行。
即使是对于一个人开发,版本管理工作也很有益处,它能让您的工作条理清晰,避免许多重复工作。
CVS版本控制系统的优点文件的任何已存储的修订版都可以被调出来观看或修改任两个修订版之间的差异都可以显示出来修补版可以自动建立可以多名开发人员同时编辑同一项目或文件而不会遗失数据项目可以分组开发多方面同时进行。
这些分支版本最后可以合并到开发主线中可以通过规模大小不同的网络进行分布式开发(CVS提供各种不同的认证机制)CVS图解CVS服务器开发者开发者开发者版本同步Import、Checkout、Commit、UpdateCVS中涉及到的概念 仓库模块沙箱仓库Repository: 中文名称:仓库。
它是CVS服务器(可能在远程,也可能在本地)的根目录,我们所有的工作都保存在这个仓库中,包括源代码和这些代码的全部历史。
你可以把Repository想像成一个仓库,仓库中有许多“木桶”,每个“木桶”就是我们的一个让CVS管理起来的工程。
对于CVS来说,这些“木桶”之间是没有什么关联的,删除一个“木桶”不会影响别的“木桶”。
简介CVS 是 Concurrent Version System(并行版本系统)的缩写,用于版本管理.如果大家曾经参与过多人协作开发的项目,大家肯定有这样的痛苦经历:由于多个人同时修改同一个文件,自己辛辛苦苦修改的程序被别人彻底删除了.另外,如果你的软件/程序已经发布了三个版本,而这时候用户需要你修改第二个版本的东西,也许你会因为只保留了最新版本而痛哭流涕。
还有就是你对程序做了一些修改,但是修改很少,你只想给远方的同事发一个两个版本之间的差别文件,这样可以免于邮箱不够大,网速太慢之类的问题.为了解决类似这样的问题,以及诸如生成补丁文件,历史版本修改等,一帮黑客(褒义)在原先 Unix 体系里很成熟的 SCCS 和 RCS 的基础上,开发了 CVS。
(SCCS:Source Code Control System,RCS:Revision Control System)。
CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。
由仓库管理员统一管理这些源程序.这样,就好象只有一个人在修改文件一样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。
用户做的任何修改首先都是在本地进行,然后用cvs 命令进行提交,由 cvs 仓库管理员统一修改.这样就可以做到跟踪文件变化,冲突控制等等.由于 CVS 是典型的 C/S 结构的软件,因此它也分成服务器端和客户端两部分。
不过大多数CVS 软件都把它们合二为一了。
我们这里就分别从服务器和客户端的角度讨论cvs的使用。
Cvs服务器安装首先确保系统安装有cvs:[root@mailxinetd.d]# rpm -qa|grepcvscvs-1.11.1p1-3如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包。
一创建CVS属主用户:# useradd -d /cvsrootcvs# chmod 771 /cvsroot二、建立CVS仓库(初始化cvs)# sucvs$ cvs -d /cvsrootinit$exit#四、启动cvs服务器在/etc/xinetd.d/目录下创建文件cvspserver,内容如下:# default: on# description: The cvs server sessions;service cvspserver{socket_type = streamwait = nouser = rootserver = /usr/bin/cvsserver_args = -f --allow-root=/cvsrootpserverlog_on_failure += USERIDonly_from = 192.168.0.0/24}其中only_from是用来限制访问的,可以根据实际情况不要或者修改。
cvs配置作者:施浩日期:2013/9/21版本:V1.0cvs介绍CVS是一个C/S系统,可以帮助开发人员进行项目版本控制,使得项目文件能够同步,便于项目成员对源码的维护。
在一台服务器上建立一个项目文件仓库(包含源码),有管理员统一管理。
每个用户在使用文件之前,首先要将文件下载到本地,之后用户可以对文件进行任何修改,最后使用CVS命令进行提交,由CVS库进行统一管理。
CVS把一个文件的所有版本保存在一个文件里,仅仅保存不同版本之间的差异,很容易恢复旧版本,可以避免项目成员之间的文档或源码相互覆盖。
CVS的配置分为服务器端可客户端两部分,在这里服务器段使用LinuxRedHat 5环境,客户端在Win 7环境访问。
服务器端说明在【HAND产品集成虚拟机】中安装了CVS,可以使用rpm –q –a|grepcvs命令进行查看,可以查看到安装包名。
此处假设虚拟机上没有安装cvs服务。
可以使用rpm –e [cvs安装包名]命令进行软件的卸载。
既然已经安装过cvs服务,虚拟机上也就存在cvs相关的配置,后面将谈及。
准备下载安装包:cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz安装与配置1、将下载好的安装包上传到虚拟机中可以在/u01目录下新建一个cvs-1.11.22文件夹,将.gz文件放在这个文件夹中。
2、使用命令进入这个文件夹,将文件进行解压tar –zxvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz3、安装./configuremakemake install4、安装完成后可以测试是否安装成功cvs –version可以看到cvs的版本信息。
客户端说明客户端的配置主要使用wincvs,但是wincvs的安装还需要python,不然shell命令就不能使用。
wincvs和python之间的版本控制需要注意,因为不是两者都是最新的版本是最好的,版本之间的差异会导致wincvs找不到安装的python。
一、服务器搭建与配置1、安装cvsserver(默认安装,省略)2、新建一个文件夹如:f:/CONFIGROOT;3、在repository configuration中配置cvs仓库,之后可以在F:\CONFIGROOT\CVSROOT中看到许多关于cvs的配置信息4、server settingserver setting中run as 选择具有windows管理者权限的用户5、在cvs control panel的about中重启一下cvs。
6、cmd下,cvsroot环境变量配置:set cvsroot=:pserver:Administrator@HOUQING:/CONFIGROOT(set cvsroot=:协议:用户名@主机名:/仓库名)注意,可以直接在系统环境变量里边设置了cvsroot(只有一个资源库时比较适用),这样不用每次都手动设置cvsroot,但是当有多个资源库的时候,可能会有问题。
7、cvs login登陆Cvs login 资源库名以后登录后,可以用cvs ls查看资源库中的module8、添加用户及密码设置(unix、xp中一般这样操作;win2000等,直接通过计算机用户组管理,并将对应组授权给创建的资源库。
),但不建议xp安装cvsnt。
cvs passwd -a -r Administrator yanshi(和admin用户权限一样的用户)yanshi是你想新添加的用户名 Administrator指定现在用具有admin权限的用户来创建yanshi用户否则出现错误信息:Only administrators can add or change another's password这条命令后就可以设置这个用户的密码。
成功后可以使用这个用户了服务器中,导入一个module:cvs import -m "test_03_import_command" cvs_test_03 /CONFIGROOT导入一个新的moudle cvs_test_03注意:可以通过cvs ?了解查询更多cvs命令的使用。
CVS使用方法范文CVS (Concurrent Versions System) 是一个开源分布式版本控制系统,它允许多个用户并发地管理和跟踪文档、源代码和其他文件的更改。
CVS可以用于个人项目或者团队项目,它有助于组织和维护代码的版本历史记录,并提供了一种协作开发代码的方式。
下面将详细介绍CVS的使用方法。
安装CVS:2.安装CVS。
执行安装文件,并按照安装向导的指示进行安装。
创建一个新的仓库:1.创建一个空的目录。
选择一个合适的位置在你的计算机上创建一个空目录,用于托管你的仓库文件。
2. 初始化仓库。
在新创建的目录中,运行`cvs init`命令来初始化仓库。
导入代码到仓库:1.在你的本地计算机上创建一个新的文件夹来保存你的代码。
2.打开终端(命令提示符或终端窗口)并导航到你的代码文件夹。
3. 运行`cvs import`命令来将你的代码导入仓库。
命令的格式如下:`cvs import -m "initial import" <repository> <vendor tag><release tag>`检出仓库:1.再次打开终端并导航到你希望保存检出代码的目录。
2. 运行`cvs checkout`命令来从仓库中检出代码。
命令的格式为:`cvs checkout <repository>`更新代码:1.打开终端并导航到你检出代码所在的目录。
2. 运行`cvs update`命令来更新你的代码。
提交更改:1.打开终端并导航到你的代码所在目录。
查看仓库历史记录:1.打开终端并导航到你的代码所在目录。
2. 运行`cvs history`命令来查看仓库的历史记录。
回滚到特定版本:1.打开终端并导航到你的代码所在目录。
2. 运行`cvs update -j <previous_version> -j<current_version>`来将你的代码回滚到特定版本。