配置管理工具之CVS
- 格式:docx
- 大小:20.87 KB
- 文档页数:6
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 的认识与配置内容摘要CVS是基于C/S结构的系统,由一个中心版本控制系统记录文件版本,从而实现很多人同时开发一个项目的时候能够实现文件版本同步。
CVS 的全称是Current Version Control即版本控制工具,它是一种广泛应用的、开源的、透明于网络的版本控制系统,用户可以通过CVS来实现项目的共享,运用CVS命令,来实现对CVS 的控制,对项目的控制。
关键词版本控制工具,BUG,功能,术语命令,模块,安装1.1章 CVS 的引入1.1.1 CVS是什么CVS 的全称是Current Version Control即版本控制工具,它是一种广泛应用的、开源的、透明于网络的版本控制系统。
用户使用CVS时,首先要架设一台CVS服务器,在CVS服务器上导入项目实例、设置CVS项目访问控制等。
而客户则通过客户端来访问CVS 服务器,客户可以取得项目最新代码副本,提交自己修改的代码等,而客户可以从Internet、LAN甚至本机来访问CVS服务器。
1.1.2 CVS的工作CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序.由仓库管理员统一管理这些源程序.这样,就好象只有一个人在修改文件一样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地.用户做的任何修改首先都是在本地进行,然后用 cvs 命令进行提交,由 cvs 仓库管理员统一修改.这样就可以做到跟踪文件变化,冲突控制等等.1.CVS引入的原因在安装cvs的过程中,我们时常会问——为什么要使用CVS?如果没有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 是 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是用来限制访问的,可以根据实际情况不要或者修改。
软件过程管理实验报告(2011/ 2012 学年第二学期)实验报告指导教师实验名称软件配置管理-CVS的安装配置和使用实验类型验证实验学时 3 实验时间一、实验目的和要求掌握软件配置工具CVS的安装配置和使用。
二、实验环境(实验设备)PC机,服务器端CVSNT ,客户端WINCVS,Python,MY ECLIPSE三、实验原理及内容实验内容:1.安装CVS服务器端软件CVSNT及配置。
2.安装CVS客户端软件WinCVS及配置。
实验步骤:1.安装服务器端CVSNT2.安装客户端WinCVS3.安装Python4.配置CVSNT.WinCVS, Python5.创建CVS仓库。
6.用户管理7.创建项目,结构划分,创建模块,创建分支,并行开发8.配置ECLIPSE 与CVS一同工作实验报告四、实验小结(包括问题和解决方法、心得体会、意见与建议等)CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。
CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。
CVS使用流程a checkout 仅当本地没有working copy时使用b staus 检查服务器上是否有新版本c update 如果有,则用update同步文件d 做你自己的修改,并保证正确e update 看是否有人修改了你的文件f 如果有冲突,合并冲突g commit 提交你的修改,如果因为又有人提交修改而失败,回到e步h 回到b步常用命令1、cvs checkout module_namemodule_name可以暂时理解为目录名,它会在本地当前目录下建立module_name目录,在把服务器上所有module_name目录下的文件copy到本地module_name目录下。
2、cvs update filename将文件同步到最新的版本。
不指定文件名,cvs将同步所有子目录下的文件。
CVS的配置和使⽤下⾯是搜集的资料///////////////////本⼈⽤的是CVSNT 2.0.51c,⽤最新的版本在Eclipse中死活不能列出服务器⾥内容,换了这个版本就好了,现在也不知道怎么回事。
⾸先安装,如果是使⽤安装包的版本,很简单,⼀路NEXT;如果是使⽤直接解压的版本,解压缩后把cvsnt.cpl和setuid.dll复制到%WINROOT%\system32下,并在当前⽬录下执⾏以下命令注册CVSNT系统服务:cvsservice -icvslock -i完成后可以在控制⾯版⾥看到CVS for NT的图标,在⾥⾯先启动CVS Service和CVS Lock Service,注意如果使⽤的是解压的版本,还要在CVSNT⽬录下运⾏⼀下genkey⽣成SSL的密钥:genkey.exe cvsnt-default.pem并在SSL settings中选择⼀下刚刚⽣成的密钥⽂件,这个好像没有SSL登陆就没⽤,假设⼀下,没⽤过。
如图:设置Repository,就是CVSNT资源库的位置,切换到Repositories选项卡,Add添加CVSNT资源库的位置,此处Location选为E:/CVSNT/Repository,Name是访问CVSNT服务器时使⽤的路径名,按默认即可,本⼈是/CVSNT/Repository,如果是新建的⽬录,会提⽰你是否初始化Repository,同意即可。
如图:切换到Advanced,先在Use local users for pserver authentication instead of domain users和Pretend to be a Unix CVS version钩上,这是让CVSNT使⽤本地账户作为pserver认证⽅式以及让CVSNT服务器模拟为Unix CVS服务器,如图:CVSNT服务器已经配置好了,接下来是我使⽤过程中遇到问题最多的⽤户配置。
目录第1章CVS工具的安装配置 (1)1.1基本安装 (1)1.2CVS S ERV ER端的配置 (1)1.3CVS C LIENT端的配置 (3)第2章CVS的基本操作 (5)2.1U NIX环境下的操作说明 (5)2.2W INDOWS环境下的操作说明 (7)第1章CVS工具的安装配置1.1 基本安装以下以UNIX平台为例。
从/servlets/ProjectDownloadList下载最新的cvs安装包到本地后:%gunzip cvs-1.11.2.tar.gz%tar xvf cvs-1.11.2.tar%cd cvs-1.11.2%./configure (可以用./configure --help看看,根据自己的环境添加相应的参数)%make%su - (以正确的用户来安装)%make install1.2 CVS Server端的配置安装完CVS(假设cvs安装在/usr/local/bin)后:启动CVS服务%vi /etc/servicespserver 2402/tcp #cvs pserver port (确认这一行存在。
)%vi /etc/inetd.conf在文件末尾加入:pserver stream tcp nowait root /usr/local/bin/cvs cvs --allow-root=/your/path/for/cvs/repsitory pserver注意这是一行。
然后重新启动inetd进程(一般要root用户权限):%ps -ef | grep inetd 找出inetd的pid%su -%kill -HUP pid%inetd●建立cvsadm用户和组(使cvsadm用户属于cvsadm组,用于对cvs进行管理)在cvsadm用户的.cshrc(ksh,sh对应的文件为.profile)文件中设置环境变量$PATH变量中加入/usr/local/bin并置$CVSROOT为::pserver:cvsadm@192.168.4.33:/your/path/for/cvs/repository其中192.168.4.33为CVS服务器的IP地址。
CVS安装cvs安装常见方法有两种,rpm(只能用于linux系统)及源码安装。
1.rpm安装下载地址:/安装方法:$ rpm –i cvs*.rpm2. CVS源码安装源码下载:/non-gnu/cvs/source/stable/1.11.22/ 编译安装:$ tar -zxf cvs-1.11.22.tar.gz$ cd cvs-1.11.22$ ls$ ./configure --prefix=/usr/local/lyb/cvs(可以用./configure --help看看,根据自己的环境添加相应的参数)$ make$ suPassword:# make install# cd /usr/local/lyb/cvs/# ./cvs –v(如果出现一些类似版本相应信息,说明已经成功安装)服务端配置1.建立cvsroot用户和组(使cvsroot用户属于cvs组,用于对cvs进行管理) root用户下执行以下命令:#groupadd cvs#useradd cvsroot –g cvs –d /root/cvsroot#passwd cvsroot#输入cvsroot用户密码#mkdir /root/cvsroot#chgrp –R cvs /root/cvsroot#chown –R cvsroot /root/cvsroot2.初始化CVS需要在cvsroot用户下执行#su – cvsroot初始化CVS服务器的根目录,以后创建的CVS项目都将建立在这个目录下,采用的命令如下:#cvs -d /root/cvsroot init这样目录/root/cvsroot就成为CVS服务器的根目录,以后创建的目录都将默认的存放在这个目录下。
3.添加环境变量(针对CVS管理员cvsroot)使用cvsroot用户登录,在这个用户下的. profile环境配置文件(不同的系统配置文件及添加环境变量的方法不同)中增加1、设置CVSROOT环境变量CVSROOT=/var/cvsrootexport CVSROOT2、在PATH变量中加入cvs的路径/usr/local/bin3、添加完毕,保存修改,并关闭编辑器。
1.安装CVS (只安装cvsnt_setup.exe就行了)首先要正确安装并配置好CVS服务器,这里我们推荐CVSNT,可以下载CVSNT 2.0.51a,安装并启动CVSNT:2.配置cvsnt然后切换到Repositories面板,添加一个Repository,命名为/newCVS,CVSNT会提示是否初始化这个Repository,选择“是”, Next :然后在Advanced面板上选中“Pretend to be a Unix CVS version”:然后,在Windows账户中为每一个开发人员添加用户名和口令。
3.建立cvs工程现在,CVSNT的安装配置已经完成,下一步,启动Eclipse,我们可以使用原有的OK工程,或者新建一个Project,然后选择菜单Window->Show View->Other,打开CVS->CVS Repositories:然后点击按钮,添加一个Repository:注意:Host处也可以填写IP地址。
Reository path:处填写上面创建的/newCVS .用户名和口令直接填Windows的其他用户名和口令,然后选中“Validate Connection on Finish”,点击Finish完成:首先,我们要将一个现有的工程放到CVS服务器中,切换到Package Explorer,选中OK工程,右键点击,选择Team->Share Project…Finish :使用刚才我们添加的Repository,继续,并将所有文件都添加到CVS中,最后Eclipse提示Commit:填入一个简单的注释,确定,然后Eclipse会把整个工程提交到CVS服务器,可以在Package Explorer 中看到图标发生了变化,Index.jsp文件后面会有版本号1.1。
在CVS Repositories面板中刷新,可以看到刚添加进来的工程:在团队开发中,当创建了一个基本的工程并提交到CVS后,别的开发人员首先要Check Out这个工程到各自的本地计算机上,这里为了演示,首先我们在Package Explorer中删除OK工程,然后打开CVS Repositories(如果没有看到Repository就按照上面的方法添加Repository),选择OK工程,右键点击,选择Check Out As…:作为一个Project签出,就可以在Package Explorer中看到签出的工程。
文档名称:wincvs配置方法作者:叮呤呤E-Mail:chutt@ 1.服务端安装下载的程序为cvsnt_2.0.58d.rar选择全部安装(尽量别选择典型安装),安装完成后,启动建库:完成2.客户端安装客户端选择wincvs.exe 7,453kb 是版本3.Python安装下载的是python_2.2.3.exe,因为wincvs是1.3的,所以一定要用python_2.2.x的版本(估计这个不安装可能也不影响使用,会报个python不可用的提示),一路回车安装即可4.配置登录系统的用户该用户即为cvs的用户5.客户端配置进入,显示如下界面,接着路径要这么写(我是这么在资源管理器里建的目录D:\cvsroot):6.登录确定后,单击登录确定,输入user的密码,确定后显示登录成功7.创建库(即项目名称)看了网上下载的安装文档,一直有人说不要把数据文件和程序目录放在一起,当时还没明白,现在明白了,是不要建在同一个目录中,例如cvs安装在D:\CVSROOT目录中,开始的时候还把数据文件放到了D:\CVSROOT\data中,那么数据文件就是要放的项目可以建立在D:\DATA中。
启动服务端,在服务端创建数据仓库Add完成后,应用、确定,退出该界面。
重新启动机器(没有重启时,在客户端一直无法找到数据仓库,重启了就好了)。
8.导入项目接着启动客户端,接着在首选项中设置进入的数据仓库目录,即d:\data,但要写成data确定后接着登录,确定,(注意前面图登录的是administrator,是用哪个用户登录的,就用哪个用户的密码认证)输入administrator的密码登录成功了哦,下面开始导入项目了哦,选择要导入的项目(这是在本地硬盘中的目录哦,)在这里显示在score上单击右键,单击导入项目|模块,接着单击继续改成Myscore ,填写输入日志信息,单击确定显示看资源管理器中,已经有了myscore选择导出的项目,选择MYscore,进入所以直接输入名称MYscore,检出到本地文件夹,可以通过选择进行,这里放在本地硬盘中的E:\cvstemp中,这是一个建立的放导出文件的目录。
cvs配置说明第一步:打开CVSNT Control Panel第二步:选择Repository configuration标签,点击Add按钮。
如下图所示:择你的cvs的存放代码的目录。
Name标签自动会加上,Description标签可用填写。
第四步:点击Ok按钮如下图:Run as项可选择administrator,也可在我的电脑->右键->管理,新建用户也可。
标签中把Respond as cvs 1.11.2 to version r 和Respond as cvs 1.11.2 to version r 选上。
点击“确定”按钮。
第七步:选择About标签,在Services,对CVSNT和CVSNT Lock点击Start按钮菜单:Window->Show View ->Other->CVS->cvs Repositories右键New->Repository Location ->Add CVS Repository填写:Location中的:Host:127.0.0.1Repository path: /cvs_resp(和cvs的name名一致)User:administrator(你机器的登录名)Password:admin (你的机器密码)Connection tpye:pserver(选择)Save password (选上)填写完毕如下图:点击Finish按钮Branches:分支标签左面项目: 右键->Team ->share project点击next按钮选择服务器端相关的项目点击next点击next按钮下载项目后,在左面的项目上选择:右键Team->commit 或update 就可以了。
注:commit:是指把你eclipse中的代码传到服务器上面;update:从服务器上更新代码到你的eclipse中。
VSS、CVS、SVN和ClearCase等配置工具的评估和比较版本 <1.0>修订历史记录目录1 概述 42 主要功能说明 42.1 Internet网络访问和远程管理 52.2 并行开发支持 62.3 跨平台开发支持 62.4 开发操作使用的便利性 62.5 信息安全性 73 性能详述 73.1 VSS 73.2 CVS 73.3 SVN 83.4 ClearCase 163.4.1 控制任何文件的版本 173.4.2 在版本树中组织元件发展的过程 173.4.3 使用常见的检出/编辑/检入范例 183.4.4 通过分支功能支持并行开发 193.4.5 自动的比较和版本间的归并 191 概述Visual SourceSafe:微软的版本控制工具,仅支持Windows操作系统。
虽然简单好用,但是仅适用于团队级开发,不能胜任企业级的开发工作。
Clearcase:IBM旗下Rational公司(2003年被IBM收购)的一款重量级的软件配置管理(SCM, Software Configuration Managemen)工具。
与CVS和VSS不同,Clearcase涵盖的范围包括版本控制、建立管理、工作空间管理和过程控制。
从最初的软件配置计划,到配置项的确立,从变更控制到版本控制,Clearcase贯穿于整个软件生命周期。
Clearcase支持现有的绝大多数操作系统,但它的安装、配置、使用相对较复杂,并且需要进行团队培训。
CVS:Concurrent Versions System。
CVS 是有着三十年以上的时间的考验。
CVS是开放源代码软件世界的一个伟大杰作,由于CVS功能强大,跨平台,支持并发版本控制,而且免费,所以它在全球中小型软件企业中得到了广泛使用。
CVS最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是研究源代码。
CVS是一个典型的服务器/客户端软件,有UNIX版本的CVS 、Linux版本的CVS和WINDOWS版本的CVS。
1 CVSNT安装安装文件为:cvsnt-2.5.03.2382.msi,双击该文件即可开始安装。
安装结束后,在控制面版或从开始菜单中可以找到CVSNT Control Panel,点击进入C VSNT的控制面版;如图一:图一 CVSNT的控制面版此时启动了两个服务(Service):CVSNT及CVSNT Lock。
2 创建库(Repository)图二 CVS库配置点击Add按钮,即可配置CVS的库,如图三所示:图三配置CVS库按OK按钮,若D:/CVSRepo目录不存在,则会提示是否创建该目录,点击创建该目录,则在本地D盘出现如图四所示的目录结构。
图四 CVS库相应的目录结构在这个目录结构中,其中CVSROOT是管理员所使用的目录。
3 创建用户在开始> 管理> 计算机管理的用户管理中增加一个用户,如cvsUser1。
在一个团队中,有多少个开发者即可以创建多个用户。
以上是CVS服务器端的设置。
下面将说明客户端如何使用CVS,Eclipse本身提供了C VS客户端的功能。
4 在Eclipse中联接CVS库在Eclipse的window > Open Perspective打开CVS Repository Expolrin g透视图(若上下文菜单中没有此选项,则可从other…菜单项中选择),在CVS Resposi tories View窗口的空白区(如图五),右键弹出上下文菜单,CVS > Repository Loc ation…,打开窗口,如图六。
图五 CVS Respositories View窗口图六增加CVS库按finish按钮即可完成设置。
5 将项目加入CVS库例如创建一个名为CVSTestProj的项目,并在其中编写一个HelloWorld的类(假设在包demo下),现在将该项目工程加入cvs库。
右键点击该项目名称,在弹出的上下文菜单中,选Team > Share Project,如图七所示:图七将项目加入CVS库以下用默认选项,按next直至finish。
1 Cvs 简介CVS 是Concurrent V ersions System (并发版本系统)的简称。
它是一个开放源代码的项目,是当前最流行的版本控制系统,目前绝大部分Open Source 项目都使用它来做版本管理。
如果你还习惯用微软的VSS 来进行Java 项目的版本管理,那么用上Eclipse 后,建议还是转为使用CVS 。
CVS 采用客户机/服务器体系,代码、文档的各种版本都存储在服务器端,开发者首先从服务器上获得一份复制到本机,然后在此基础上进行开发。
开发者可随时将新代码提交给服务器,当然也可以通过更新操作获得最新的代码,保持与其他开发者的一致。
Eclipse 本身内置了CVS 客户端,只要再建立一个CVS 服务器就可以使用这一功能强大的版本控制系统。
CVS 的功能虽强大,但一般项目通常只用到其20%的功能,所以只要了解最常用的操作就可以了。
了解最常用的操作就可以了。
2 安装cvs2.1安装cvsnt直接安装,无特殊操作,一直“下一步”,安装到默认目录c:\Program Files\cvsnt 中。
中。
3 配置cvs3.1配置一个Repositoy使用“开始-所有程序-cvsnt- Service control panel ”来建立一个Repositoy 。
在repository configuration 选项卡中点击add 添加添加中的内容,否则可能出现异常 在location中填写存放位置,name中最好填写location中的内容,否则可能出现异常点击ok后2个弹出窗口中都点击yes在compatibility options选项卡中将cvsnt clients中的前三项都点上勾,点击确定中的前三项都点上勾,点击确定这时我们的初步配置便完成了,c 盘下会出现名为cvsfile 的文件夹的文件夹3.2进行用户建立和配置Repository 配置完成后cvs 会将当前windows 登陆用户作为cvs 的admin 用户,但使用操作系统用户会较麻烦和缺乏安全性,所以我们将禁用操作系统用户。
版本控制⼯具VSS使⽤介绍什么是版本控制?1.怎样对研发项⽬进⾏整体管理 2.项⽬开发⼩组的成员之间如何以⼀种有效的机制进⾏协调 3.如何进⾏对⼩组成员各⾃承担的⼦项⽬的统⼀管理 4.如何对研发⼩组各成员所作的修改进⾏统⼀汇总 5.如何保留修改的轨迹,以便撤销错误的改动6. 对在研发过程中形成的软件的各个版本如何进⾏标识,管理及差异识辨版本控制⼯具介绍•Starteam是⼀个集合了版本控制、构建管理(Build Management)和缺陷跟踪系统为⼀体的软件,并且具有强⼤的图形界⾯,易学易⽤;但管理复杂、维护困难。
2002年底被Borland公司收购。
•PVCSVersion Manager是美国的MERANT公司软件配置管理⼯具PVCS 家族中的⼀个组成部分,它能够实现源代码、可执⾏⽂件、应⽤⽂件、图形⽂件和⽂档的版本管理;它能安全地⽀持软件并⾏开发,对多个软件版本的变更进⾏有效的控制管理。
•ClearCase(CC)是ROSE构件的⼀部分,⽬前最⽜的配置管理⼯具,主要应⽤于复杂的产品发放、分布式团队合作、并⾏的开发和维护任务。
可以控制word, excel,powerpoint , visio等⽂件格式,对于不认识的格式可以⾃⼰定义⼀种类型来标识。
•VisualSourceSafe ( VSS )简单易⽤、⽅便⾼效、与Windows操作系统及微软开发⼯具⾼度集成。
•ConcurrentVersions System ( CVS )是开发源码的并发版本系统,它是⽬前最流⾏的⾯向软件开发⼈员的源代码版本管理解决⽅案。
它可⽤于各种平台,包括 Linux 、Unix和Windows NT/2000/XP等等。
Visual SourceSafe (VSS)概述提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能同 Visual Basic、Visual C++、Visual FoxPro 等开发环境以及 Microsoft Office 应⽤程序集成在⼀起简单⼯作原理VSS中的⼏个重要概念⽂件 fileVSS中我们处理的所有⽂档都叫⽂件操作:check out , check in , undo check out , view项⽬ project存储在VSS数据库中的所有⽂件的集合,类似于“⽂件夹”操作:⽂件的add , delete , edit , share⼯作⽂件夹 working folder在我们的本地机上。
采用CVS的配置管理规划和实施摘要:本文首先介绍了配置管理的概念、任务和目标,接着介绍CVS及工具WinCVS,并以其在某SOA 项目中的实际应用,详细描述了配置管理在信息项目建设管理中的规划和实施。
关键词:配置管理、信息项目管理、CVS、WinCVS1 概述随着技术的发展和需求的不断提高,信息项目的建设日益规范和严谨,如何在项目需求复杂及变更频繁的情况下对代码、组件和文档等的版本进行有效的控制,从而全面记载实施过程中的历史变更,管理和保护信息资产资源,提升信息项目开发效率和产品质量,就显得至关重要,配置管理因此逐渐成为软件生命周期中的重要控制过程,在信息项目实施过程中扮演着越来越来重要的角色。
软件配置管理(Software Configuration Management,简称SCM)对软件生命周期内所选定的中间工作产品、产品组件以及产品的惟一标识、受控存储、变更控制和状态进行记录和报告,包括配置管理工具和应用技术如流程和方法。
要进行成功的软件配置管理,需运用相应的管理流程和管理工具。
CVS是目前应用面较广的企业级、跨平台的配置管理工具之一,CVS主要基于Windows和UNIX的开发环境,支持跨平台复杂环境的软件开发,提供了比较全面的配置管理支持,包括版本控制、工作空间管理、过程控制等,开发人员无需针对CVS改变现有的环境、工具和工作方式。
2 配置管理与CVS2.1 配置管理基本概念软件配置管理是指通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施,是对处于不断演化、完善过程中的软件产品的管理过程。
其基本目标是记录产品的演化过程,确保项目实施者在整个产品生命周期中各个阶段都能得到精确的产品配置。
其最终目标是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合。
通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理功能。
软件配置管理是一种标识、组织和控制修改的技术,应用于整个软件项目管理全过程,主要为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更,在整个产品的实施活动中占有很重要的位置。
配置管理工具比较以下从产品背景、本地化中文支持、支持服务、对中国市场的重视程度、产品特性、性价比、成功客户等几个方面对Hansky、Rational、CVS和PVCS等进行对比分析。
◆比较1:产品背景Hansky:98年始于美国硅谷,而且之前在美国有多年的技术沉淀和应用经验积累,属于新一代的技术和产品,其产品的安全性、稳定性和运行效率较好。
Rational:80年代的技术架构,为Rational收购的产品;为目前世界上使用最广泛的配置管理工具。
PVCS:MERANT公司的PVCS是一套专业的组织并管理软件资源的软件工具,支持有效的软件结构管理。
CVS(Concurrent Versions System)是一种较为广泛使用的开发源代码的版本控制系统。
◆比较2:本地化研发支持Hansky:于2000年建立了中国本地的研发和支持中心,在中国有近40名技术人员,提供完全汉化的版本,包括界面、文档和手册。
CVS:有汉化,但无技术支持。
Rational/PVCS:无汉化产品,需第三方软件汉化。
◆比较3:支持服务Hansky:在北京建立了技术支持中心,可以提供及时、专业的应用咨询、高级培训、技术支持服务。
Rational/PVCS:有售前技术人员,但无研法人员。
CVS:没有针对中国客户的支持中心。
◆比较4:对中国市场的重视程度Hansky:在中国有50人的团队。
Rational:中国市场份额不到Rational全球市场的1%,支持不够,但目前在中国的市场占有率高。
PVCS: 1996年由 PTS 引入中国后由PTS代理, 2002年后由IMAG 代理。
整个产品在中国市场表现和技术支持逐步改观。
CVS:作为一个非商业的软件,只有易用性是只得称道的地方。
但是无论从性能还是产品支持都无法满足真正的企业开发管理的需要。
◆比较5:产品体系架构Firefly:全新的体系架构,采用类三层结构,基于TCP/IP 协议,完全隔离后台存储。
1.安装与配置CVSNTCVS 全称Concurrent Versions System,主要用于管理在开发过程中生成的源代码、文档等资料,记录他们的更新历史,使开发团队各成员可以更好的协作。
CVS版本控制系统采用C/S架构,目前CVS server可以支持Linux、windows 2000/xp/2003以及部分unix(如sun的solaris等),CVS client在linux、windows、unix上也有对应的版本。
在eclipse中已经内置了CVS client,eclipse的文档中建议将CVS server安装在linux、unix等操作系统上,不过在我们大多数人的开发中,采用CVS server for windows仍然是最方便快捷的方式,尽管它可能比不上linux、unix版本那样的稳定。
在正式的配置之前你需准备的软件:1、eclipse /javamxj/archive/2004/10/11/131952.aspx目前最新的版本是3.0.12、cvs server for windows /cvspro/目前最新的版本是2.0.51d(注:关于如何在CVSNT 2.0.58d 版本下使用,请参考/javamxj/archive/2005/01/05/240726.aspx)主要内容:1、安装与配置cvsnt;2、在eclipse中配置CVS client;3、创建一个CVS实例;4、实践CVS;第一节安装与配置cvsntcvsnt直接运行安装程序安装即可。
配置cvs server1.开始->所有程序->cvsnt ->Service control panel,出现以下窗口:(安装后的默认状态是运行的)2.切换倒repositories页,点击“add”按钮建立一个项目库,在这里我新建一个D:/cvsfile目录,点击OK,出现一个对话框,点击"是"即可.3. 切换到Advanced页:选择如下:一定要将use local users for pserver和pretend to be a unix CVS server这两项选上,前者是要求cvs server采用windows 的本地用户进行权限认证,如果采用域用户权限,那么所有的客户端开发机都必须要登录到windows域才能连接到CVS server,比较麻烦。
配置管理工具之CVS这一章是为那些从没有用过CVS和那些以前可能从没用过版本控制软件的人所准备的。
如果你已对CVS很熟悉,仅仅想了解某一个特点或是为了记住某一个命令,那么你可以跨过这一切。
CVS是什么?CVS是一个版本控制系统。
使用它,你可以记录下你的源文件的历史。
例如:修改软件时可能会产生一些bug,而且可能过了很久你才会察觉到它们的存在。
有了CVS,你可以很容易地恢复旧版本,并从中看出到底是哪个修改导致了这个bug 。
有时这是很有用的。
当然了,你可能把所有版本的所有文件都保存了下来。
但这会浪费大量的磁盘空间。
而CVS用一种聪明的办法来保存一个文件的所有版本——仅仅保存不同版本之间的区别——在一个文件里。
如果你是项目开发组的一员,CVS也会帮助你。
除非极为小心,成员之间很容易互相覆盖文件。
一些编辑器,如GNU Emacs,会保证同一时间内同一文件绝不会被两个人修改。
不幸的是,如果有人用了另外的编辑器,这种保护就没用了。
CVS 用隔离开不同的开发者解决了这个问题。
每个开发者在他自己的目录里工作,等每一个开发者都完成了他们自己的工作后,CVS会将它们合并到一起。
CVS最初由Dick Grune在1986年12月以shell scripts的形式发布在comp.sources.unix的新闻组第6卷里。
虽然当前的CVS中没什么代码来自于这些shell scripts,但许多CVS的冲突解决算法是从它们来的。
1989年4月,Brian Berliner设计了CVS并编写了代码,之后Jeff Polk帮助Brian设计了CVS模块发行分支。
你可以从好多渠道得到CVS,包括从INTERNET上自由下载。
有关下载CVS和其它与CVS相关的话题,请访问下面网址:/http://www.loria.fr/~molli/cvs-index.html有一个关于CVS的邮件列表,名叫info-cvs,要订阅或退订请发email:info-cvs-request@。
如果你更喜欢新闻组,comp.software.config-mgmt 可能比较适合于讨论CVS(还有其它一些配置管理系统)。
将来,可能会创立一个comp.software.config-mgmt.cvs, 当然那要确取决于在comp.software.config-mgmt上有足够的CVS讨论。
你也能订阅bug-cvs邮件列表,详见[附录 H]。
要订阅可以发emal到bug-cvs-request@。
CVS不是什么?CVS可以为你做很多,但不要指望它能为每一个人做每一件事情。
CVS不是一个BUILD系统。
虽然你的源码库(repository)和模块文件与你的BUILD系统互相作用(例如:Makefiles),但它们本质上还是互相独立的。
CVS不能指导你如何构造什么,它只是将你所设计的文件以一种树结构保存下来以备恢复之用。
CVS不能决定如何在一个检出的目录使用磁盘空间。
如果你在每一个目录中都写下Makefiles或脚本,且必须知道其它一切的相对位置,有时不得不要检出整个源码库。
如果你将你的工作模块化,并且建立了一个共享文件的build系统(通过links,mounts,Makefiles里的VPATH等),你就可以随意安排磁盘的使用。
不过你要记住构建和维护这样一个系统是要做许多工作的,而CVS不善此道。
当然了,你应该在CVS下放一个工具来支持这样一个构造系统(脚本,Makefiles,等等)。
当有些变化发生在CVS范围之外时,要想想什么文件需要重建。
一个传统的方法是用make来构造,并用一些自动化的工具来产生make所用的相关文件。
关于结合CVS进行build,请参考[第 14 章]。
CVS不能替代管理.你的经理和项目负责人应经常与你交流以确保你时时记得进度表、合并点、分支名和发布日期。
如果他们不这样做,CVS也没用。
CVS只是一个用来使你的资源与你的步调一致的工具。
但你是风笛手和作曲家。
没有哪种乐器会自己演奏或是作曲。
CVS 不能代替开发者之间的交流.在单个文件内遇到冲突时,大多数开发者不费多大力气就能解决它们。
但更常见的"冲突(conflict)",是那些难度较大、不在开发者之间进行交流就没法解决的问题。
当在一个文件内或多个文件中同时发生变化时,CVS并不知道何时它们会在逻辑上发生冲突。
它的冲突(conflict)概念是纯粹文本意义上的,这种冲突会在同一个文件的两种变化十分接近以致于会破坏合并命令(如diff3)。
CVS决不会指出程序逻辑上非文本或分布式的冲突。
例如:假如你在文件A中改变了函数X的参数。
同时,别人在编辑文件B,仍用旧参数调用X这个函数。
此时产生的冲突CVS可就无能为力了。
要养成经常阅读说明书和经常与你的同伴交谈的习惯。
CVS没有变化控制变化控制可以指许多事情。
首先它的意思可以是BUG跟踪(bug-tracking),就是说它能维持一个数据库,其中包括已报告的BUG和每一个BUG状态(比如:是否已更正?在哪一个版本中?提交这个BUG的人是否认为已经更正?)。
为了使CVS和一个外部的跟踪BUG系统协调一致,请参考rcsinfo和verifymsg文档[附录 C]。
变化控制的另一个方面指跟踪这样的情况,即对好几个文件的改变实际上只是同一个逻辑变动。
如果你在一次cvs commit操作中改变了几个文件,CVS会忘掉它们是一起改变的,即便它们共用一个LOG信息。
做一个GNU风格的Changelog 可能会有点用。
在一些系统中,变化控制的另一个方面是跟踪每一个变化的状态的能力。
一些变化由一个开发者写出,而另一些变化则由另一个开发者来作出评论,等等。
一般来讲,用CVS来做,是产生一个diff(用cvs diff或diff),可以用patch来利用。
这个非常灵活,但依赖于CVS之外的机理以保证事情不会崩溃。
CVS不是自动测试程序测试套件可以利用commitinfo文件。
不过我没有听说过多少项目试图那样做或whether there are subtle gotchas。
CVS没有内建的处理模型有些系统提供一些方法确保变更或发布通过不同的步骤,以及各种所需的批准过程。
一般地,你可以用CVS来完成它,但是有点不太够。
有些情况下你想用commitinfo, loginfo, rcsinfo或verifymsg文件,要求在CVS提交之前完成某些操作。
你也会考虑诸如branches和tags等特性是否能用在一个开发树,然后合并仅被证明一次的修改到一个稳定的树。
例子作为一种介绍CVS的方式,我们将使用CVS进行一次演练(work-session)。
第一个要明白的是CVS把所有的文件集中保存在一个源码库(repository)[第 2 章]中;在此我们假定已建立好一个源码库。
假定你开发的是一个简单的编译器。
源文件包括几个C文件和一个Makefile。
编译器叫tc(Trivial Compiler), 同时源码库已建立。
因此有一个叫tc的模块。
获取源文件首先要做的是得到一份tc源文件的工作拷贝。
你需要用checkout命令:$ cvs checkout tc这样会创建一个名为tc的新目录并把源文件复制到这个目录中。
$ cd tc$ lsCVS Makefile backend.c driver.c frontend.c pars er.cCVS目录是CVS内部使用的。
正常情况下,不要改变或移动里面的任何文件。
用你的编辑器,对backend.c进行修改,几小时的优化后通过了编译器。
RCS和SCCS使用者应注意:不必锁住你想编辑的文件。
详细解释请参考[第 10 章]。
提交修改当你刚用编译器检查过文件可以编译时,你却决定对backend.c做新的修改。
CVS 会把你的新文件保存在源码库中并且使用同一源码库的任何人也可以得到它。
$ cvs commit backend.cCVS打开一个编辑器,让你输入一个日志信息。
你敲入“Added an optimization pass.”, 保存这个临时文件,退出了编辑器。
环境变量$CVSEDITOR决定运行哪一个编辑器。
如果没有设置$CVSEDITOR而设置了环境变量$EDITOR,那么就会启用后者。
如果两者都未设置,那么会启用一个默认编辑器,比如在unix系统上会是vi, 在Windows NT/95系统是notepad。
做为补充, cvs还会检测$VISUAL环境变量. 这取决于是否需要和以后的CVS版本是否检测$VISUAL. 不必多虑,你不设置$VISUAL或者将它与$EDITOR设成一样.当CVS启动编辑器时,它包含了一个被修改的文件的名单。
对于CVS客户,这个名单基于文件的修改时间和它最近一次被修改的时间。
因此,如果一个文件的修改时间改变了而内容没有,它就好象一个修改过的文件一样。
处理这种情况最简单的的办法是别管它——如果你使用提交的话,CVS会检测到它的内容没有改变,从而把它作为未改变的文件来处理。
下一次update会告知CVS此文件没有修改,并会重设时间标记以便此文件不会在以后的编辑过程中出现。
如果你想避免打开一个编辑器,你可以在命令行使用-m标记来指定日志信息,如下所示:$ cvs commit -m "Added an optimization pass" backend.c清除在你转到其他程序任务之前,如果要删除tc的工作拷贝,一般采用如下方法:$ cd ..$ rm -r tc但是更好的方法是使用release命令[release--Indicate that a Module is no longer in use 在附录 A]:$ cd ..$ cvs release -d tcM driver.c? tcYou have [1] altered files in this repository.Are you sure you want to release (and delete) directory `tc': n** `release' aborted by user choice.release命令检查你所做的所有更改。
如果打开历史纪录功能,它会同时在历史档案文件中加入一条注释。
[The history file 在附录 C]。
当你用release的-d参数时,它将删除你的工作拷贝。
在以上的例子中,release命令向输出设备写了几行文字。
? tc意思是CVS不认识文件tc。
这一点你不需要担心。
tc是一个可执行文件,它不会被存储在源码库中。
关于如何消除这些警告,参见[Ignoring files via cvsignore 在附录C]。