《基于CVS的版本控制系统服务器安装与维护毕业论文设计.doc》由会员分享,可在线阅读,更多相关《基于CVS的版本控制系统服务器安装与维护毕业论文设计.doc(39页珍藏版)》请在三一办公上搜索。
1、 毕 业 设 计 论 文题 目:基于CVS的版本控制系统服务器安装与维护学 院: 电气与信息工程学院 专 业: 电子信息工程 摘要随着软件行业的蓬勃发展,工业设计、商业开发越来越离不开软件系统的支持和运作,软件系统不单单是提高了工业系统的工作效率,更重要的是它大大节省了项目成本,降低了项目风险,提高了项目运算的精细程度,增强了企业管理效益。所以说,作为一款具有纽带作用的版本控制系统CVS,不仅仅是互联网从业者的必修课,也是工科类从业者必须了解的范畴。详细叙述中渗透CVS的专业术语、命令语句。在安装与维护的叙述中,主要是以安装CVSNT(Windows环境下的CVS服务器)和WinCVS(Win
2、dows环境下的CVS客户端)来实战叙述设计中的每一步。一方面使自己掌握CVS版本控制系统的安装与维护使用,另一方面,使自己真正从设计中学习到知识技能。本设计主要完成了CVS的版本控制系统的安装与维护,详细讲述CVS版本控制系统的由来、基本概念、工作模式、工作原理,以及CVS版本控制系统在Windows环境和Linux环境下的客户端和服务器配置方法,并完成了CVS版本控制系统在项目中的实践应用。关键词:安装与维护,CVS,CVSNT,WinCVS,服务器,CVS命令AbstractWith the development of the software industry, industrial
3、 design, commercial development is becoming more and more cannot do without the support and operation software system, software system not only improves the industrial efficiency of the system, the more important is that it saves the project cost, reduce the project risk, improve fine degree project
4、 operation, enhances the enterprise management efficiency. So, as a link between the version control system CVS, not only is a compulsory course in the Internet practitioners, but also engineering practitioners must understand the category.This design is mainly and maintenance of CVS version control
5、 system based on the origin, installation, details about the CVS version control systems basic concept, working mode, working principle, as well as the CVS version control system in Windows environment and Linux environment of the client and server configuration method.Of course, in the details grad
6、ually penetrate professional terminology, command of some CVS. In the installation and maintenance of the narrative, the main is to install the CVSNT (Windows environment, CVS server) and WinCVS (Windows environment under the CVS client) to combat the narrative for each step in the design of. On the
7、 one hand, let oneself really learn from the design to the actual combat skills and knowledge, on the other hand, with the CVS version control system can refer to the installation and maintenance manual to want to quickly learn, learning the CVS version control system colleagues.Keywords: installati
8、on and maintenance, CVS, CVSNT, WinCVS, server, CVS command目录摘要IAbstractII目录III1 绪论11.1研究背景与目的11.2 课题设计的意义11.3课题国内外研究状况21.4课题研究方案比较31.5论文的结构32 基于CVS的版本控制系统介绍52.1 什么是CVS52.2 CVS的基本概念52.3 CVS的工作模式和工作思路62.4 CVS代码的集中配置与调整72.5 CVS的典型功能83 Windows下CVS服务器与客户端的配置103.1 Windows下CVS服务器的配置103.2 Windows下CVS客户端的配置
9、133.2.1 配置WinCVS163.2.2 登录WinCVS服务器173.2.3 新建模块173.2.4 Checkout模块183.2.5 update和commit文件183.2.6 Add文件183.2.7 Remove文件193.2.8 Remove空目录194 Linux下CVS服务器与客户端的配置204.1 Linux下CVS服务器的配置204.1.1 创建cvs组并加入用户204.1.2 创建一个仓库204.1.3 装入源代码204.1.4 设置权限214.1.5 设置开机自动运行CVS224.2 Linux下CVS客户端的配置234.2.1 连接CVS服务器234.2.2
10、登录CVS服务器244.2.3 拷贝相应模块代码并进行开发245 项目中CVS的版本控制255.1 将项目提交到CVS服务器255.2 将项目下载到CVS客户端255.3 将更改的项目提交到CVS服务器265.4 将CVS服务器中的更改更新到CVS客户端265.5 版本控制系统服务器安装与维护注意事项276 CVS版本控制系统的开源化286.1 CVS开源方向286.2 CVS与Araxis Merge配套使用286.3 CVS与Eclipse配套使用29结论30致谢31参考文献32附录33附录A:CVS中常用专业术语33附录B:CVS工作拓扑图及CVS客户端和服务器界面341 绪论1.1研究
11、背景与目的一个项目往往有多人参与,如何协调各个人的开发工作,就成为项目开发小组需要直接面对的问题。一般的解决方案是采用版本控制系统,如微软的VSS,开源的CVS以及Subversion等等。Eclipse对团队开发提供了默认的支持,其内置了CVS的客户端。所以我们只需安装一个CVS服务器端就可以进行项目开发的版本控制了。在这次毕业设计中我选择了windows平台下的cvsnt来作cvs服务器。随着软件团队人员的增加,软件版本不断变化,时间的紧缺,多种平台的复杂环境,使得版本控制软件已成为当今软件开发人员(工程人员和管理者)所必须的工具。CVS采用典型的Client/Server 结构,开发团队
12、能够跨越网络跨平台进行分布式操作。在软件开发环境中,CVS 自动追踪每一种对象类型(包括源代码、二进制文件、目录内容、可执行文件、文档、测试包、编译器、库文件)等变更情况,通过分支和归并功能支持并行开发。直接解决了原来开发团队所面临的难以处理的问题。在各种具体方案应用之前,安装和配置 CVS 服务器,并学会简单的使用是第一要务。本设计就CVS的安装配置和简单使用做一介绍,并对CVS在项目应用中做基础的工程实践。1.2 课题设计的意义CVS(Concurrent Versions System)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。Concurrent有并发的、协
13、作的、一致的等含义。实际上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改,而不仅仅局限于程序设计。CVS维护的文件类型可以是文本类型也可以是二进制类型。CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。它明确地将源文件的存储和用户的工作空间独立开来,并使其并行操作。CVS基于客户端/服务器的行为使其可容纳多个用户。这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。所有重要的免费软件项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。这些项目包括GNOME、KDE、THE GIM
14、P和Wine等。 所以说关于CVS的版本控制系统的安装与维护具有诸多意义,例如:修改软件时可能会不知不觉混进一些bug,而且可能过了很久你才会察觉到它们的存在。有了CVS,你可以很容易地恢复旧版本,并从中看出到底是哪个修改导致了这个bug。有时这是很有用的。CVS用一种聪明的办法把一个文件的所有版本保存在一个文件里,仅仅保存不同版本之间的差异。CVS最初由Dick Grune在1986年12月以shell脚本的形式发布在 comp.sources.unix 的新闻组第 6 卷里;1989年4月,Brian Berliner设计了CVS并编写了代码。之后Jeff Polk帮助Brian设计了CV
15、S模块和销售商分支支持。CVS不能指导你如何构造什么。它只是将你所设计的一种树结构文件保存下来以备恢复之用。CVS不能决定如何在一个检出工作目录使用磁盘空间。如果你在每一个目录中都写下Makefile或脚本,且必须知道其它一切的相对位置,有时不得不检出整个仓库。CVS如果你将你的工作模块化,并且建立了一个共享文件的build系统(通过links,mounts,Makefiles 里的VPATH等),你就可以随意安排磁盘的使用。CVS你应该在CVS下放一个工具来支持这样一个构造系统(脚本、Makefile 等等)。CVS有些变化发生在CVS范围之外时,要想想什么文件需要重建。一个传统的方法是用m
16、ake来构造,并用一些自动化的工具来产生make所用的相关文件。1.3课题国内外研究状况目前业界主流的版本维护工具有ClearCase、Visual Source Safe以及本设计将要详细介绍的CVS,下面逐一进行简要介绍。1)ClearCaseClearCase 由Rational 公司开发,它支持UNIX 系统,混合平台开发,除了支持图形界面以外,还支持命令行格式的操作。它是一种功能强大、复杂的软件配置管理工具,版本控制是该软件的主要功能之一。ClearCase 包括两套:ClearCase LT 和ClearCase(MultiSite)。前者可以用于在同一个局域网的开发小组,适合于中
17、小型开发组织;ClearCase(MultiSite)则适应于分布于不同地理位置、不同局域网的开发小组,适合于大型的开发组织。ClearCase LT 由ClearCase LT Server 和ClearCase LT Client 两个部分组成,其中服务器部分负责数据的集中管理;客户端部分则安装在各个需要使用ClearCase 服务的机器上,以及主要开发人员的计算机上,属于典型的Client/Server 结构。2)Visual SourceSafeVisual SourceSafe 是微软公司开发的版本控制系统,可管理软件和 Web 站点的开发。Visual SourceSafe 可以处
18、理由各种开发语言、创作工具或应用程序所创建的任何文件类型。与CVS 相比,Visual SourceSafe 的最大特点是用户可以同时在文件和项目级进行工作。Visual SourceSafe 面向项目的特性能更有效地管理工作组应用程序开发或 Web站点开发工作中的日常任务。3)CVSCVS是自由软件社区最流行的版本控制系统,为BSD(FreeBSD,NetBSD等)和许许多多大大小小的软件项目所采用。CVS 是并行控制系统的缩写,这是一个将一组文件放在层次目录树中以保持同步的系统。与前述的两个商业软件不同,CVS 是开放源代码的版本控制系统。但作为许多开放源码项目选用的版本管理软件,CVS
19、在版本控制方面与前两者相比并不逊色,可以说是各有千秋。在代码管理上,与上述的两种商业版本控制软件的unlock-modify-lock 的模式不同;CVS 采用的模式是copy-modify-merge 的模式,在实际应用中,理解这一模式与其他模式的区别,才能更好的制定日常的维护和操作的准则。1.4课题研究方案比较关于CVS的版本控制系统服务器安装与维护,在安装与维护的系统层面上来说,目前比较广泛流行的操作系统有Windows和Linux。1)CVS在Windows系统上的安装与维护Windows系统作为目前全球市场份额最多的操作系统,有着无与伦比的优势和大众化性能。在工业设计、工业开发上,W
20、indows可视化界面降低了开发门槛和技术难度。就本设计来说,无论是在Windows系统上搭建CVS平台,还是在Windows系统上操作控制CVS平台及服务器,都大大降低了难度。2)CVS在Linux系统上的安装与维护相比Windows系统,Linux系统的不可视化使得Linux本身在使用上就困难重重,必须学习相关语言命令,才能很顺畅的操作Linux系统进行日常工作。从这一点上来讲,Linux系统并不太适合本设计的课题研究。1.5论文的结构本文主要由六个章节组成:第一章 主要阐述了本文研究的主要背景和目的,以及课题设计的意义,综合概括了国内外课题研究现状。第二章 主要围绕CVS的基本概念,工作
21、模式,工作思路,以及CVS的集中配置调整,来叙述CVS的基本功能以及要使用到的专业术语。第三章 主要详细展示Windows环境下CVS服务器与客户端安装与配置方法。第四章 主要详细展示Linux环境下CVS服务器与CVS客户端安装与配置方法。第五章 主要演示了在搭建好的CVS服务器环境和客户端环境下项目中CVS版本控制的应用。第六章 主要阐述了CVS版本控制系统的开源化对于协同工作,或者对于大型软件系统开发的影响,以及介绍了两款与CVS版本控制系统配合使用的软件。2 基于CVS的版本控制系统介绍2.1 什么是CVSCVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而
22、达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。与它相类似的代码版本控制软件有Subversion。2.2 CVS的基本概念1)Repository(仓库)CVS 的仓库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令,获得一份本地copy,改动后再check in(commit) 回仓库。而仓库通常为与工作目录分离的。CVS通过多种方式访问仓库。每种方法有不同目录表示形式。数据如何存放在repository中:随着CVS版 本的不同,存放结构会发生变化,一般情况下用户无需了解数据到底是如何存放的。2)Revisio
23、n(修订版)每 一个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。另外一个作用是在发布软件的时候表
24、示哪些文件及其哪个版本是可用的;各文件不同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不能解决如下问题:某人修改了函
25、数f的参数,而另外一个人在另外一个地方用老的参数调用该函数。文本冲突需要用户自己参与解决,CVS无法自动解决。6)Module(模块)CVS服务器根目录下的第一级子目录。通常用于存放一个项目的所有文件7)Check out(检出)通常指将仓库中的一整个模块首次导出到本地。8)Check in(导入)通常指通过提交整个目录结构并创建一个新的模块。9)Release(发行版本)整个产品的版本10)Update(更新)从模块中下载其他人的修改过的文件。更新本地的拷贝。11)Commit(提交)将自己修改过的文件提交到模块中。2.3 CVS的工作模式和工作思路CVS(Concurrent Versio
26、ns System)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。Concurrent有并发的、协作的、一致的等含义。实际上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改,而不仅仅局限于程序设计。CVS维护的文件类型可以是文本类型也可以是二进制类型。CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。它明确地将源文件的存储和用户的工作空间独立开来,并使其并行操作。CVS基于客户端/服务器的行为使其可容纳多个用户。这一特性使得CVS成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。所有重要的免费软件
27、项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。这些项目包括GNOME、KDE、THE GIMP和Wine等。在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。由源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后用户可以在本地任意修改,最后用CVS命令进行提交,由CVS源代码库统一管理修改。这样,就好像只有一个人在修改文件一样,既避免了冲突,又可以做到跟踪文件变化等。CVS是并发版本系统(Concurrent Versions System)的意思,主流的开放源码网络透明的版本控制系统。CVS对
28、于从个人开发者到大型、分布团队都是有用的。它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码。它的无限制的版本管理检出(check out:注1)的模式避免了通常的因为排它检出模式而引起的人工冲突。它的客户端工具可以在绝大多数的平台上使用。CVS被应用于流行的开放源码工程中,像Mozilla,GIMP,XEmacs,KDE和GNOME等。那么它到底怎么样?你可能会说,它非常棒,但是对于我来说它能做什么?首先,基本的 :一个版本控制系统保持了对一系列文件所作改变的历史记录。对于一个开发者来说,那就意味着在你对一个程序所进行开发的整个期间,能够跟踪对其所作的所有改动的痕迹。
29、对你来说,有没有出现过由于在命令行上按错键而导致一天的工作都白费的情况呢?版本控制系统给了你一个安全的网络。版本控制系统对任何人都有用,真的。(毕竟,谁不愿意使用一个安全的网络呢?)它们经常被软件开发团队使用。在团队中工作的开发者需要能够调整他们的各自的修改;一个集中式版本控制系统允许那样做。2.4 CVS代码的集中配置与调整个人开发者希望一个版本控制系统的安全网络能够运行在他们的本地的一台机器上。然而,开发团队需要一个集中的服务器,所有的成员可以将服务器作为仓库来访问他们的代码。在一个办公室中,没有问题 -只是将仓库连到本地网络上的一台服务器上就行了。对于开放源码项目噢, 还是没有问题,这要
30、感谢因特网。CVS内建了客户机/服务器存取方法,所以任何一个可以连到因特网上的开发者都可以存取在一台CVS服务器上的文件。在传统的版本控制系统中,一个开发者检出一个文件,修改它,然后将其登记回去。检出文件的开发者拥有对这个文件修改的排它权。没有其它的开发者可以检出这个文件- 并且只有检出那个文件的开发者可以登记(check in:注2)所做的修改。(当然对于管理员有很多方法可以超越这个限制。)想一下排它的检出可能会如何工作:Bob的兄弟检出 foo.java以便加入注释,写好代码后他什么也没做。然后他去吃午饭了。Bob吃完午饭后,发现他的老板所指给他的一个bug在 foo.java里。他试图检
31、出 foo.java 但是版本控制系统不允许他这样做,因为他的兄弟已经把它检出了。Bob不得不等着他的兄弟吃完午饭回来(在这个好日子用了两个小时),他才可以修正bug。在一个大型的开放源码工程中,因为开发者可能在任意的时区工作得很晚,给予一个开发者阻止任意地方的其它开发者继续处理任意文件的能力很明显无法运转。他们最终将因为不能够在他们想要的时候开展项目而感到厌烦。CVS通过它的无限制的检出模式解决了这个问题。检出一个文件并不给定开发者对那个文件的排它权。其它的开发者也可以对其检出,进行他们自己的修改,并且将其登记回去。详细地回答就是当多个开发者对同一个文件作了修改CVS会检测,并且自动合并那些
32、改变。不用担心,CVS会很小心,并且将会自动合并那些只要不是对代码的同一行所作的改动。如果CVS不能安全的处理这些改动,开发者将不得不手工合并它们。有大量在许多平台上可用的CVS附加工具,它们给CVS增加了功能或使得CVS更容易使用。2.5 CVS的典型功能1)替代管理你的经理和项目负责人应经常与你交流以确保你时时记得进度表、合并点、分支名和发布日期。如果他们不这样做,cvs 也没用。cvs 只是一个用来使你的资源与你的步调一致的工具。但你是风笛手和作曲家,没有哪种乐器会自己演奏或是作曲。不能代替开发者之间的交流。在单个文件内遇到冲突时,大多数开发者不费多大力气就能解决它们。但更常见的冲突(c
33、onflict),是那些难度较大、不在开发者之间进行交流就没法解决的问题。当在一个文件内或多个文件中同时发生变化时,cvs 并不知道何时它们会在逻辑上发生冲突。它的冲突(conflict)概念是纯粹文本意义上的,这种冲突会在同一个文件的两种变化十分接近以致于会破坏合并命令(如diff3)。CVS决不会指出程序逻辑上非文本或分布式的冲突。例如:假如你改变了在文件A 中定义的函数X 的参数。同时,别人在编辑文件B,仍用旧参数调用 X 这个函数。此时产生的冲突 cvs 可就无能为力了。2)变化控制变化控制可以指许多事情。首先它的意思可以是 BUG 跟踪bug-tracking,就是说它能维持一个数据
34、库,其中包括已报告的 BUG 和每一个 BUG 状态 (是否已更正?在哪一个版本中?提交这个 BUG 的人是否认为已经更正?)。为了使 cvs 和一个外部的跟踪 BUG 系统协调一致,请参考 rcsinfo 和 verifymsg文件(参阅 Administrative files)。变化控制的另一个方面指跟踪这样的情况,即对好几个文件的改变实际上只是同一个逻辑变动。如果你在一次 cvs commit 操作中检入几个文件,cvs 会忘掉它们是一起检入的,它们共用一个 LOG 信息的事实只是把它们绑在一起而已。做一个 gnu 风格的 ChangeLog 可能会有点用。在一些系统中,变化控制的另一
35、个方面是跟踪每个变化的状态的能力。一些变化由一个开发者写出,而另一些变化则由另一个开发者来作出评论,等等。一般来讲,用 cvs 来做,是产生一个 diff(用 cvs diff 或 diff),并且用电子邮件寄给某人,此人就可以用 patch 来应用它。这是非常灵活的,但依赖于 cvs 之外的机制以保证事情不会崩溃。3)自动测试强制利用 commitinfo文件测试套件应该是可能的。不过我没有听说过多少项目试图那样做或那里有微妙的陷阱。4)内置处理有些系统提供一些方法确保变更或发布通过不同的步骤,以及各种所需的批准过程。一般地,你可以用 cvs 来完成它,但是可能要多做点工作。有些情况下你想用
36、 commitinfo、loginfo、rcsinfo 或 verifymsg文件,要求在 CVS 提交之前完成某些操作。你也会考虑诸如 branches 和tags等特性是否能用在一个开发树中执行任务,然后仅当它们被证实就把某些修改合并到一棵稳定的树中。CVS 还有一个更加重要的特性:能记下每个文件的每次修改,以及如何被修改对于基于 Internet 的合作方式来说,这些特性太重要了。一个地域上分散的自愿者组织显然不可能投入很多的时间来训练其成员彼此合作。因为这样的话,当该组织有成员变更的时候,为此付出的投资将损失殆尽。所以需要指定一套基本的项目分配方案,以确保新成员能较容易的适应工作,同时
37、也需要设置一个自动的系统来接受外来代码,并使每个成员能及时得到最新修改的代码。3 Windows下CVS服务器与客户端的配置3.1 Windows下CVS服务器的配置CVS是目前最常用的版本控制和软件配置系统。其开源性在其普及的过程中功不可没,然而正因为开源造成了其易用性较差。往往一个功能需要通过几个看似不相干的操作配合才能进行。Windows下CVS的多帐户配置正是这样一个相当重要的,但很不好操作的功能。几个难点如下:CVS源自Unix系统,其Windows的移植版并没有服务器功能。在Windows下一般采用安装CVSNT这个软件来建立CVS Repository,但CVSNT的操作方法和原
38、始的CVS略微不同。CVS本身是命令行形式,其配置过程比较繁杂。CVS的多帐户配置需要手动修改Repository的CVSROOT文件夹里的文件,缺乏统一的界面。在安装了CVSNT服务器之后,默认的用户就是建立Repository的Windows系统的登陆帐户,但在多人开发的时候,肯定没人希望大家都使用同一个名字来Commit;更重要的是,我们可能需要配置开发人员的权限,例如限制某些人只能看程序,而某些人可以Commit程序,某些人可以添加新的Module。以下是详细的步骤,环境是CVSNT 2.5.05(Gan) (Build 3489)(RCO):图 3-1-1 CVSNT安装截图图 3-
39、1-2 CVSNT服务器界面1、使用CVSNT建立一个Repository。假设初始使用Windows的管理员administrator密码登陆,Repository使用Pserver协议,IP是1.2.3.4,端口号是2401,Repository名称是/TestRep,密码是123。这时的administrator也是此Repository的管理员。2、为了进行多用户配置,必须修改Repository的CVSROOT目录的几个文件。首先在客户端将:pserver:administrator1.2.3.4/TestRep设为CVSROOT环境变量(请注意区分CVSROOT目录和CVSROOT
40、环境变量)。然后用administrator登陆到CVS,最后Check Out出此CVSROOT目录。命令如下所示:cvs login/输入密码123cvs co CVSROOT3、在服务器端为Windows添加一个专门用于CVS操作的Windows帐户。所有的CVS帐户都要映射到这个Windows帐户上进行实际的操作。虽然很多资料并没有提到需要建立Windows帐户,但我在实验中发现没有这种帐户,CVS在后边执行任何操作时都会报告没有此帐户的错误。假如这个新的帐户叫做cvsuser。使用Windows命令net user cvsuser cvsuserpassword /Add可以添加此帐
41、户。在添加完成之后,一定要记得将/TestRep在服务器上的实际文件夹的权限里添加cvsuser的读写权限,否则到最后任何映射到cvsuser的CVS帐户都会因为没有写权限无法进行正常的commit操作。首先在服务器上的资源管理器里的“工具”菜单里找到“文件夹选项”,在随后出现的“查看”选项卡里找到“使用简单文件夹共享”的项目,取消掉前面的勾,单击确定。然后右击/TestRep所在文件夹,单击“属性”。在随后打开的对话框里可以看到“安全”选项卡。我们需要在这里添加cvsuser的读写权限。4、为CVS添加自己的帐户。通过使用命令cvs passwd我们可以添加任意多个CVS帐户(当然,只是针对
42、当前的Repository)。所有的帐户信息会被保存在CVSROOT目录的passwd文件当中。然而这个文件是不能Check Out出来的,只能在服务器那里看到它,并且其保存的密码信息是被加过密的。我们可以添加cvsadmin,user1,user2,anonymous等用户。例如添加cvsadmin时的命令是:cvs passwd -a -r cvsuser cvsadmin/输入cvsadmin的密码/再次输入cvsadmin的密码5、这样就新添了cvsadmin帐户,并将其映射到Windows帐户cvsuser上(-a表示添加一个账户,-r表示影射到操作系统的帐户中。我期望将cvsadm
43、in作为以后/TestRep的管理员。这一点十分重要,如果这时候不设置的话,再将CVS改为“仅使用CVS帐户校验模式”之后就再也没有机会添加管理员了(因为只有管理员可以看得到和操作CVSROOT目录)。6、设定cvsadmin为CVS管理员。在客户端的CVSROOT目录下新添一个名为admin的文件。在里面将每一个想要升为管理员的CVS帐户的帐户名写到文件中,每行一个帐户名。当然admin文件只有放到服务器,cvsadmin的升迁才能生效。但是,仅仅是这么将admin文件提交上去是不能起作用的。在提交它之前,必须将admin的信息添加到checkoutlist文件中。checkoutlist的
44、格式在文件中有介绍,是“空格 文件名 空格 出错信息 回车符”。我们在里面添加一条记录:admin adminerror特别注意admin前面一定要留一个空格。7、当新的CVS管理员和帐户信息都准备好后,就要将/TestRep的帐户校验模式从“操作系统集成校验模式”修改为“仅使用CVS帐户校验”模式。这么做可以避免为了在CVS中使用多用户时需要操作Windows帐户的麻烦。这个设置的地方在CVSROOT目录中的config文件。打开客户端的config文件,将里面的#SystemAuth=yes改为SystemAuth=no(注意将#删除后,SystemAuth前不能有空格)。修改后保存con
45、fig文件。8、提交CVSROOT里的所有更新到服务器,我们的设置就生效了。命令如下所示:cd CVSROOTcvs add -m admincvs commit -m 不过在提交之前,你也许想先把CVSROOT的owner从原来的administrator修改为cvsadmin。使用命令cvs chown可以做到这一点。在提交了CVSROOT目录后,校验模式就立刻改变了,cvsadmin也同时开始生效。这时,用之前的administrator就无法使用CVS了。我们改用cvsadmin帐户重新登陆,继续下面的操作。9、修改读写权限。CVS有两种读写权限的设置方法,一是粗粒度的,一是细粒度的。
46、只有CVS管理员才能进行访问权限的修改。粗粒度的方法是在CVSROOT中添加readers或者writers文件来实现。在readers里添加的任何一个帐户对当前库只拥有读取权限,添加格式是每行一个帐户名。例如,我们在客户端的CVSROOT目录里添加readers文件,将之前的一个新建帐户anonymous放到里面,然后commit这个readers文件到服务器。anonymous就不能进行commit了。实际的测试结果是在使用anonymous登陆之后执行commit指令,系统会报告正常执行完毕。但实际上,没有任何东西被commit,暴露了CVS在人机界面上的不完善。writers文件的操作
47、readers完全一样。如果一个帐户名被同时写到两个文件里,此帐户只有只读权限。细粒度的方法是使用chacl命令。例如/TestRep里有3个工程,project1、project2、project3。使用命令:cvs chacl -u user1 -a none -d project1,project2,project3cvs chacl -u user1 -a all -d project1cvs chacl -u user1 -a read,write -d project2cvs chacl -u user1 -a read -d project3可以让user1拥有对project1目录的完全控制权,对project2目录的读写权,和对project3目录的只读权。第一条命令首先删除user1的所有权限,在随后的3条命令里分别设置了3个不同目录权限。10、使用帐户组来组织帐户。在客户端的CVSROOT目录下添加一个叫group的文件。此文件的格式是:组名1:用户名1,用户名2,用户名3,组名2:用户名5,用户名7,修改完group文件后commit它,然后通过chacl命令可以实现组权限的修改。3.2 Windows下CVS客户端的配置同样,在设计中用WinCVS为例来配置CVS客户端。WinCVS是CVS的一个客户端程序,它以CVS作