基于CVS的版本控制系统服务器安装与维护毕业论文设计 精品.docx
- 文档编号:28413965
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:39
- 大小:1.12MB
基于CVS的版本控制系统服务器安装与维护毕业论文设计 精品.docx
《基于CVS的版本控制系统服务器安装与维护毕业论文设计 精品.docx》由会员分享,可在线阅读,更多相关《基于CVS的版本控制系统服务器安装与维护毕业论文设计 精品.docx(39页珍藏版)》请在冰豆网上搜索。
基于CVS的版本控制系统服务器安装与维护毕业论文设计精品
毕业设计[论文]
题目:
基于CVS的版本控制系统服务器安装与维护
学院:
电气与信息工程学院
专业:
电子信息工程
摘要
随着软件行业的蓬勃发展,工业设计、商业开发越来越离不开软件系统的支持和运作,软件系统不单单是提高了工业系统的工作效率,更重要的是它大大节省了项目成本,降低了项目风险,提高了项目运算的精细程度,增强了企业管理效益。
所以说,作为一款具有纽带作用的版本控制系统CVS,不仅仅是互联网从业者的必修课,也是工科类从业者必须了解的范畴。
详细叙述中渗透CVS的专业术语、命令语句。
在安装与维护的叙述中,主要是以安装CVSNT(Windows环境下的CVS服务器)和WinCVS(Windows环境下的CVS客户端)来实战叙述设计中的每一步。
一方面使自己掌握CVS版本控制系统的安装与维护使用,另一方面,使自己真正从设计中学习到知识技能。
本设计主要完成了CVS的版本控制系统的安装与维护,详细讲述CVS版本控制系统的由来、基本概念、工作模式、工作原理,以及CVS版本控制系统在Windows环境和Linux环境下的客户端和服务器配置方法,并完成了CVS版本控制系统在项目中的实践应用。
关键词:
安装与维护,CVS,CVSNT,WinCVS,服务器,CVS命令
Abstract
Withthedevelopmentofthesoftwareindustry,industrialdesign,commercialdevelopmentisbecomingmoreandmorecannotdowithoutthesupportandoperationsoftwaresystem,softwaresystemnotonlyimprovestheindustrialefficiencyofthesystem,themoreimportantisthatitsavestheprojectcost,reducetheprojectrisk,improvefinedegreeprojectoperation,enhancestheenterprisemanagementefficiency.So,asalinkbetweentheversioncontrolsystemCVS,notonlyisacompulsorycourseintheInternetpractitioners,butalsoengineeringpractitionersmustunderstandthecategory.
ThisdesignismainlyandmaintenanceofCVSversioncontrolsystembasedontheorigin,installation,detailsabouttheCVSversioncontrolsystem'sbasicconcept,workingmode,workingprinciple,aswellastheCVSversioncontrolsysteminWindowsenvironmentandLinuxenvironmentoftheclientandserverconfigurationmethod.
Ofcourse,inthedetailsgraduallypenetrateprofessionalterminology,commandofsomeCVS.Intheinstallationandmaintenanceofthenarrative,themainistoinstalltheCVSNT(Windowsenvironment,CVSserver)andWinCVS(WindowsenvironmentundertheCVSclient)tocombatthenarrativeforeachstepinthedesignof.Ontheonehand,letoneselfreallylearnfromthedesigntotheactualcombatskillsandknowledge,ontheotherhand,withtheCVSversioncontrolsystemcanrefertotheinstallationandmaintenancemanualtowanttoquicklylearn,learningtheCVSversioncontrolsystemcolleagues.
Keywords:
installationandmaintenance,CVS,CVSNT,WinCVS,server,CVScommand
1绪论
1.1研究背景与目的
一个项目往往有多人参与,如何协调各个人的开发工作,就成为项目开发小组需要直接面对的问题。
一般的解决方案是采用版本控制系统,如微软的VSS,开源的CVS以及Subversion等等。
Eclipse对团队开发提供了默认的支持,其内置了CVS的客户端。
所以我们只需安装一个CVS服务器端就可以进行项目开发的版本控制了。
在这次毕业设计中我选择了windows平台下的cvsnt来作cvs服务器。
随着软件团队人员的增加,软件版本不断变化,时间的紧缺,多种平台的复杂环境,使得版本控制软件已成为当今软件开发人员(工程人员和管理者)所必须的工具。
CVS采用典型的Client/Server结构,开发团队能够跨越网络跨平台进行分布式操作。
在软件开发环境中,CVS自动追踪每一种对象类型(包括源代码、二进制文件、目录内容、可执行文件、文档、测试包、编译器、库文件)等变更情况,通过分支和归并功能支持并行开发。
直接解决了原来开发团队所面临的难以处理的问题。
在各种具体方案应用之前,安装和配置CVS服务器,并学会简单的使用是第一要务。
本设计就CVS的安装配置和简单使用做一介绍,并对CVS在项目应用中做基础的工程实践。
1.2课题设计的意义
CVS(ConcurrentVersionsSystem)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。
Concurrent有并发的、协作的、一致的等含义。
实际上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改,而不仅仅局限于程序设计。
CVS维护的文件类型可以是文本类型也可以是二进制类型。
CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。
它明确地将源文件的存储和用户的工作空间独立开来,并使其并行操作。
CVS基于客户端/服务器的行为使其可容纳多个用户。
这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。
所有重要的免费软件项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。
这些项目包括GNOME、KDE、THEGIMP和Wine等。
所以说关于CVS的版本控制系统的安装与维护具有诸多意义,例如:
修改软件时可能会不知不觉混进一些bug,而且可能过了很久你才会察觉到它们的存在。
有了CVS,你可以很容易地恢复旧版本,并从中看出到底是哪个修改导致了这个bug。
有时这是很有用的。
CVS用一种聪明的办法把一个文件的所有版本保存在一个文件里,仅仅保存不同版本之间的差异。
CVS最初由DickGrune在1986年12月以shell脚本的形式发布在comp.sources.unix的新闻组第6卷里;1989年4月,BrianBerliner设计了CVS并编写了代码。
之后JeffPolk帮助Brian设计了CVS模块和销售商分支支持。
CVS不能指导你如何构造什么。
它只是将你所设计的一种树结构文件保存下来以备恢复之用。
CVS不能决定如何在一个检出工作目录使用磁盘空间。
如果你在每一个目录中都写下Makefile或脚本,且必须知道其它一切的相对位置,有时不得不检出整个仓库。
CVS如果你将你的工作模块化,并且建立了一个共享文件的build系统(通过links,mounts,Makefiles里的VPATH等),你就可以随意安排磁盘的使用。
CVS你应该在CVS下放一个工具来支持这样一个构造系统(脚本、Makefile等等)。
CVS有些变化发生在CVS范围之外时,要想想什么文件需要重建。
一个传统的方法是用make来构造,并用一些自动化的工具来产生make所用的相关文件。
1.3课题国内外研究状况
目前业界主流的版本维护工具有ClearCase、VisualSourceSafe以及本设计将要详细介绍的CVS,下面逐一进行简要介绍。
1)ClearCase
ClearCase由Rational公司开发,它支持UNIX系统,混合平台开发,除了支持图形界面以外,还支持命令行格式的操作。
它是一种功能强大、复杂的软件配置管理工具,版本控制是该软件的主要功能之一。
ClearCase包括两套:
ClearCaseLT和ClearCase(MultiSite)。
前者可以用于在同一个局域网的开发小组,适合于中小型开发组织;ClearCase(MultiSite)则适应于分布于不同地理位置、不同局域网的开发小组,适合于大型的开发组织。
ClearCaseLT由ClearCaseLTServer和ClearCaseLTClient两个部分组成,其中服务器部分负责数据的集中管理;客户端部分则安装在各个需要使用ClearCase服务的机器上,以及主要开发人员的计算机上,属于典型的Client/Server结构。
2)VisualSourceSafe
VisualSourceSafe是微软公司开发的版本控制系统,可管理软件和Web站点的开发。
VisualSourceSafe可以处理由各种开发语言、创作工具或应用程序所创建的任何文件类型。
与CVS相比,VisualSourceSafe的最大特点是用户可以同时在文件和项目级进行工作。
VisualSourceSafe面向项目的特性能更有效地管理工作组应用程序开发或Web站点开发工作中的日常任务。
3)CVS
CVS是自由软件社区最流行的版本控制系统,为BSD(FreeBSD,NetBSD等)和许许多多大大小小的软件项目所采用。
CVS是并行控制系统的缩写,这是一个将一组文件放在层次目录树中以保持同步的系统。
与前述的两个商业软件不同,CVS是开放源代码的版本控制系统。
但作为许多开放源码项目选用的版本管理软件,CVS在版本控制方面与前两者相比并不逊色,可以说是各有千秋。
在代码管理上,与上述的两种商业版本控制软件的unlock-modify-lock的模式不同;CVS采用的模式是copy-modify-merge的模式,在实际应用中,理解这一模式与其他模式的区别,才能更好的制定日常的维护和操作的准则。
1.4课题研究方案比较
关于CVS的版本控制系统服务器安装与维护,在安装与维护的系统层面上来说,目前比较广泛流行的操作系统有Windows和Linux。
1)CVS在Windows系统上的安装与维护
Windows系统作为目前全球市场份额最多的操作系统,有着无与伦比的优势和大众化性能。
在工业设计、工业开发上,Windows可视化界面降低了开发门槛和技术难度。
就本设计来说,无论是在Windows系统上搭建CVS平台,还是在Windows系统上操作控制CVS平台及服务器,都大大降低了难度。
2)CVS在Linux系统上的安装与维护
相比Windows系统,Linux系统的不可视化使得Linux本身在使用上就困难重重,必须学习相关语言命令,才能很顺畅的操作Linux系统进行日常工作。
从这一点上来讲,Linux系统并不太适合本设计的课题研究。
1.5论文的结构
本文主要由六个章节组成:
第一章主要阐述了本文研究的主要背景和目的,以及课题设计的意义,综合概括了国内外课题研究现状。
第二章主要围绕CVS的基本概念,工作模式,工作思路,以及CVS的集中配置调整,来叙述CVS的基本功能以及要使用到的专业术语。
第三章主要详细展示Windows环境下CVS服务器与客户端安装与配置方法。
第四章主要详细展示Linux环境下CVS服务器与CVS客户端安装与配置方法。
第五章主要演示了在搭建好的CVS服务器环境和客户端环境下项目中CVS版本控制的应用。
第六章主要阐述了CVS版本控制系统的开源化对于协同工作,或者对于大型软件系统开发的影响,以及介绍了两款与CVS版本控制系统配合使用的软件。
2基于CVS的版本控制系统介绍
2.1什么是CVS
CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。
CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。
与它相类似的代码版本控制软件有Subversion。
2.2CVS的基本概念
1)Repository(仓库)
CVS的仓库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令,获得一份本地copy,改动后再checkin(commit)回仓库。
而仓库通常为与工作目录分离的。
CVS通过多种方式访问仓库。
每种方法有不同目录表示形式。
数据如何存放在repository中:
随着CVS版本的不同,存放结构会发生变化,一般情况下用户无需了解数据到底是如何存放的。
2)Revision(修订版)
每一个file的各个revision都不相同,形如1.1,1.2.1,一般1.1是该文件的第一个revision,后面的一个将自动增加最右面的一个整数,比如1.2,1.3,1.4...有时候会出现1.3.2.2,原因见后。
revision总是偶数个数字。
一般情况下将revision看作时CVS自己内部的一个编号,而tag则可以标志用户的特定信息。
3)Tag(标签)
用符号化的表示方法标志文件特定revision的信息。
通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定tag的文件提交或者checkout。
另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个tag中。
如果命名一个已存在的tag默认将不会覆盖原来的;
4)Branch(分支)
当用户修改一个branch时不会对另外的branch产生任何影响。
可以在适当的时候通过合并的方法将两个版本合起来;branch总是在当前revision后面加上一个偶数整数(从2开始,到0结束),所以branch总是奇数个数字,比如1.2后面branch为1.2.2,该分支下revision可能为1.2.2.1,1.2.2.2,...
5)Conflict(冲突)
完全是纯文本的冲突,不包含逻辑上的矛盾,比如CVS不能解决如下问题:
某人修改了函数f的参数,而另外一个人在另外一个地方用老的参数调用该函数。
文本冲突需要用户自己参与解决,CVS无法自动解决。
6)Module(模块)
CVS服务器根目录下的第一级子目录。
通常用于存放一个项目的所有文件
7)Checkout(检出)
通常指将仓库中的一整个模块首次导出到本地。
8)Checkin(导入)
通常指通过提交整个目录结构并创建一个新的模块。
9)Release(发行版本)
整个产品的版本
10)Update(更新)
从模块中下载其他人的修改过的文件。
更新本地的拷贝。
11)Commit(提交)
将自己修改过的文件提交到模块中。
2.3CVS的工作模式和工作思路
CVS(ConcurrentVersionsSystem)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。
Concurrent有并发的、协作的、一致的等含义。
实际上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改,而不仅仅局限于程序设计。
CVS维护的文件类型可以是文本类型也可以是二进制类型。
CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。
它明确地将源文件的存储和用户的工作空间独立开来,并使其并行操作。
CVS基于客户端/服务器的行为使其可容纳多个用户。
这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。
所有重要的免费软件项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。
这些项目包括GNOME、KDE、THEGIMP和Wine等。
在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。
由源代码库管理员统一管理这些源程序。
每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后用户可以在本地任意修改,最后用CVS命令进行提交,由CVS源代码库统一管理修改。
这样,就好像只有一个人在修改文件一样,既避免了冲突,又可以做到跟踪文件变化等。
CVS是并发版本系统(ConcurrentVersionsSystem)的意思,主流的开放源码网络透明的版本控制系统。
CVS对于从个人开发者到大型、分布团队都是有用的。
它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码。
它的无限制的版本管理检出(checkout:
注1)的模式避免了通常的因为排它检出模式而引起的人工冲突。
它的客户端工具可以在绝大多数的平台上使用。
CVS被应用于流行的开放源码工程中,像Mozilla,GIMP,XEmacs,KDE和GNOME等。
那么它到底怎么样?
你可能会说,它非常棒,但是对于"我"来说它能做什么?
首先,基本的:
一个版本控制系统保持了对一系列文件所作改变的历史记录。
对于一个开发者来说,那就意味着在你对一个程序所进行开发的整个期间,能够跟踪对其所作的所有改动的痕迹。
对你来说,有没有出现过由于在命令行上按错键而导致一天的工作都白费的情况呢?
版本控制系统给了你一个安全的网络。
版本控制系统对任何人都有用,真的。
(毕竟,谁不愿意使用一个安全的网络呢?
)它们经常被软件开发团队使用。
在团队中工作的开发者需要能够调整他们的各自的修改;一个集中式版本控制系统允许那样做。
2.4CVS代码的集中配置与调整
个人开发者希望一个版本控制系统的安全网络能够运行在他们的本地的一台机器上。
然而,开发团队需要一个集中的服务器,所有的成员可以将服务器作为仓库来访问他们的代码。
在一个办公室中,没有问题--只是将仓库连到本地网络上的一台服务器上就行了。
对于开放源码项目…噢,还是没有问题,这要感谢因特网。
CVS内建了客户机/服务器存取方法,所以任何一个可以连到因特网上的开发者都可以存取在一台CVS服务器上的文件。
在传统的版本控制系统中,一个开发者检出一个文件,修改它,然后将其登记回去。
检出文件的开发者拥有对这个文件修改的排它权。
没有其它的开发者可以检出这个文件--并且只有检出那个文件的开发者可以登记(checkin:
注2)所做的修改。
(当然对于管理员有很多方法可以超越这个限制。
)
想一下排它的检出可能会如何工作:
Bob的兄弟检出foo.java以便加入注释,写好代码后他什么也没做。
然后他去吃午饭了。
Bob吃完午饭后,发现他的老板所指给他的一个bug在foo.java里。
他试图检出foo.java…但是版本控制系统不允许他这样做,因为他的兄弟已经把它检出了。
Bob不得不等着他的兄弟吃完午饭回来(在这个"好"日子用了两个小时),他才可以修正bug。
在一个大型的开放源码工程中,因为开发者可能在任意的时区工作得很晚,给予一个开发者阻止任意地方的其它开发者继续处理任意文件的能力很明显无法运转。
他们最终将因为不能够在他们想要的时候开展项目而感到厌烦。
CVS通过它的无限制的检出模式解决了这个问题。
检出一个文件并不给定开发者对那个文件的排它权。
其它的开发者也可以对其检出,进行他们自己的修改,并且将其登记回去。
详细地回答就是当多个开发者对同一个文件作了修改CVS会检测,并且自动合并那些改变。
不用担心,CVS会很小心,并且将会自动合并那些只要不是对代码的同一行所作的改动。
如果CVS不能安全的处理这些改动,开发者将不得不手工合并它们。
有大量在许多平台上可用的CVS附加工具,它们给CVS增加了功能或使得CVS更容易使用。
2.5CVS的典型功能
1)替代管理
你的经理和项目负责人应经常与你交流以确保你时时记得进度表、合并点、分支名和发布日期。
如果他们不这样做,cvs也没用。
cvs只是一个用来使你的资源与你的步调一致的工具。
但你是风笛手和作曲家,没有哪种乐器会自己演奏或是作曲。
不能代替开发者之间的交流。
在单个文件内遇到冲突时,大多数开发者不费多大力气就能解决它们。
但更常见的"冲突(conflict)",是那些难度较大、不在开发者之间进行交流就没法解决的问题。
当在一个文件内或多个文件中同时发生变化时,cvs并不知道何时它们会在逻辑上发生冲突。
它的冲突(conflict)概念是纯粹文本意义上的,这种冲突会在同一个文件的两种变化十分接近以致于会破坏合并命令(如diff3)。
CVS决不会指出程序逻辑上非文本或分布式的冲突。
例如:
假如你改变了在文件A中定义的函数X的参数。
同时,别人在编辑文件B,仍用旧参数调用X这个函数。
此时产生的冲突cvs可就无能为力了。
2)变化控制
变化控制可以指许多事情。
首先它的意思可以是BUG跟踪bug-tracking,就是说它能维持一个数据库,其中包括已报告的BUG和每一个BUG状态(是否已更正?
在哪一个版本中?
提交这个BUG的人是否认为已经更正?
)。
为了使cvs和一个外部的跟踪BUG系统协调一致,请参考rcsinfo和verifymsg文件(参阅Administrativefiles)。
变化控制的另一个方面指跟踪这样的情况,即对好几个文件的改变实际上只是同一个逻辑变动。
如果你在一次cvscommit操作中检入几个文件,cvs会忘掉它们是一起检入的,它们共用一个LOG信息的事实只是把它们绑在一起而已。
做一个gnu风格的ChangeLog可能会有点用。
在一些系统中,变化控制的另一个方面是跟踪每个变化的状态的能力。
一些变化由一个开发者写出,而另一些变化则由另一个开发者来作出评论,等等。
一般来讲,用cvs来做,是产生一个diff(用cvsdiff或diff),并且用电子邮件寄给某人,此人就可以用patch来应用它。
这是非常灵活的,但依赖于cvs之外的机制以保证事情不会崩溃。
3)自动测试
强制利用commitinfo文件测试套件应该是可能的。
不过我没有听说过多少项目试图那样做或那里有微妙的陷阱。
4)内置处理
有些系统提供一些方法确保变更或发布通过不同的步骤,以及各种所需的批准过程。
一般地,你可以用cvs来完成它,但是可能要多做点工作。
有些情况下你想用commitinfo、loginfo、rcsinfo或verifymsg文件,要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于CVS的版本控制系统服务器安装与维护毕业论文设计 精品 基于 CVS 版本 控制系统 服务器 安装 维护 毕业论文 设计