现在的位置: 首页 > 综合 > 正文

搭建CVS服务器和客户端

2013年09月15日 ⁄ 综合 ⁄ 共 3446字 ⁄ 字号 评论关闭

一、CVS入门知识详解

1、什么是 CVS?

CVS 是一种客户机/服务器系统,类似于microsoft SourceSafe,可以让开发人员将他们的项目存储在称为资源库的中央位置。使用 cvs 客户机工具,开发人员可以对资源库的内容进行更改。CVS 资源库会依次记录对每个文件所做的每个更改,并创建一个完整的项目开发进展历史。开发人员可以请求特定源文件的旧版本、查看更改日志,并根据需要执行其它 一些有用的任务。所有重要的免费软件项目都使用 CVS 作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。这些项目包括: Gnome, KDE, The GIMP, Wine, 等等。

CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库管理员统一管理这些源程序.这样,就好象只有一个人在 修改文件一样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用 cvs 命令进行提交,由 cvs 仓库管理员统一 修改.这样就可以做到跟踪文件变化,冲突控制等等.

CVS可以协助一组人共同开发一个工程。如果你是一个项目中的一组成员之一,CVS也能够帮助你。除非你特别仔细,你很容易覆盖其他人的工作。一些编辑 器,例如GNUEmacs,试图去判定一个文件是否被两人同时修改。不幸的是,如果一个人使用其它的编辑器时,这个安全方式将不再有效。CVS使用让不同 开发者独立工作的方式解决了这个问题。每一个开发者的工作都在他自己的目录内,并且CVS将 在每个开发者的工作完成后进行合并工作。

由于 CVS 是典型的 C/S 结构的软件,因此它也分成服务器端和客户端两部分。不过大多数CVS 软件都把它们合二为一了。我们这里就分别从服务器和客户端的角度讨论cvs的使用。

2、CVS基本概念

Repository(仓库)
CVS的仓库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令,获得一份本地copy,改动后再check in(commit)回仓库。而仓库通常为与工作目录分离的。CVS通过多种方式访问仓库。每种方法有不同目录表示形式。数据如何存放在 repository中:随着CVS版本的不同,存放结构会发生变化,一般情况下用户无需了解数据到底是如何存放的。

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则可以标志用户的特定信息。

Tag(标签)
用符号化的表示方法标志文件特定revision的信息。通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定 tag的文件提交或者checkout。另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个 tag中。如果命名一个已存在的tag默认将不会覆盖原来的;

Branch(分支)
当用户修改一个branch时不会对另外的branch产生任何影响。可以在适当的时候通过合并的方法将两个版本合起来;branch总是在当前 revision后面加上一个偶数整数(从2开始,到0结束),所以branch总是奇数个数字,比如1.2后面branch为1.2.2,该分支下 revision可能为1.2.2.1,1.2.2.2,…

Conflict(冲突)
完全是纯文本的冲突,不包含逻辑上的矛盾,比如CVS不能解决如下问题:某人修改了函数f的参数,而另外一个人在另外一个地方用老的参数调用该函数。文本 冲突需要用户自己参与解决,CVS无法自动解决。(如还有不明之处,请联系飘扬,你可以到我的博客(飘扬博客)http: //www.piaoyang.org 给我留言或QQ47720194,我会尽力解答你的问题。)

Module(模块):CVS服务器根目录下的第一级子目录。通常用于存放一个项目的所有文件
Check out(检出):通常指将仓库中的一整个模块首次导出到本地。
Check in(导入)::通常指通过提交整个目录结构并创建一个新的模块。
Release(发行版本):整个产品的版本
Update(更新):从模块中下载其他人的修改过的文件。更新本地的拷贝。
Commit(提交):将自己修改过的文件提交到模块中。

三、Windows下CVS服务器与客户端的配置

1、windows下CVS服务器的配置
在此,我们以WinCVS为例来介绍。WinCVS顾名思义,是用在windows上的,它是一款相当不错的基于Windows的CVS客户端软件。安装 时没有什么特别的地方,与普通的Windows软件相同,一路next就OK了。(最新的WinCVS可以从http: //sourceforge.net/project/showfiles.php?group_id=10072地址下载到,也可以在http: //sourceforge.net/project 上下载到最新的或其它版本的WinCVS。)由于是软件界面配置,所以针对界面选项填入相应的参数即可,在此不再赘述。

2、windows下CVS客户端的配置
同样我们以WinCVS为例来介绍。安装这个WinCVS不用再啰嗦一遍了吧,跳过,来看配置过程!

2.1 配置WinCVS
选择Admin->Preferences…,在出现的界面上进行一般选项的设置:
1) Authentication:用来配置cvs服务器的认证方式,可以从下拉框中选择其它的认证方式,不过一般只要选择默认的pserver方式就可以,要注意的是必须与cvs服务器配置时所指定的认证方式一致;
2) Path:用来配置cvs在服务器上的主目录路径,也就是服务器上用进行cvs初始化的目录,如:/home/cvsroot;
3) Host Address:用来配置cvs服务器所在服务器的地址,可以是IP地址,也可以是DNS名,如:10.104.1.204;
4) User name:用来配置要使用些WinCVS来登录CVS服务器的用户名,如:cvsyxwu,用户的登录必须由管理员把其添加cvs用户组中;
5) CVSROOT:此项一般都不需要用户进行修改,用户在输入上边的几个选项时,系统将自动根据用户的输入生成此项的相应内容。
6)在上一个界面上选择“Globals” ,进行全局选项的设置,此项的配置主要是要注意这几选项:
第一,Checkout read-only不要选上,否则,checkout出来的源代码将不允许用户进行修改,并且此选项默认是选中的;
第二,Prune (remove) empty directories也不要选上,否则,会自动删除空目录;
第三,对一般配置没有特殊要求的,把Dirty files support、Supply control when adding与TCP/IP compression选项选中;

2.2 登录WinCVS服务器
选择Admin->login,将出现如下对话框要求用户输入登录口令。输入口令后,选择“OK”按钮,如果CVS服务器与WinCVS的配置都没出错的话,将在CVS的状态栏中提示:
cvs -z9 -d :pserver:cvsyxwu@10.104.1.204:/home/cvsroot login
Logging in to :pserver:cvsyxwu@10.104.1.204:2401/home/cvsroot
***** CVS exited normally with code 0 *****
code 0表示正确的登录;而如果出错的话,将是code 1,那么要根据错误的提示进行相应的修改。

2.3拷贝相应模块代码并进行开发
1) 在workspace中的Modules选中要存放checkout模块的目录;
2) 选择Create->Checkout Modeles,将出现一个对话框,需要进行选择。其中,Module name and path on the server就是要存放checkout 内容的目录,由用户输入;而Local folder to checkout to就是第一种用户所选择的目录。
3) 至此你就可以在刚才check out的代码上进行修改或开发了。

抱歉!评论已关闭.