Redhat7.2 Linux下 CVS的使用(0分)

  • 主题发起人 主题发起人 飘香剑雨
  • 开始时间 开始时间

飘香剑雨

Unregistered / Unconfirmed
GUEST, unregistred user!
Redhat7.2 Linux下 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服务器安装
1. 首先确保系统安装有cvs:
# rpm -qa|grep cvs
cvs-1.11.1p1-
如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从网上下载最新版本安装。 到 http://www.cvshome.org/CVS/Dev/code 下载原程序编译安装,这里我不准备介绍它的安装,请参考CVS自身的文档安装.
2. 创建CVS属主用户:
# useradd -d /cvsroot cvs
# chmod 771 /cvsroot
3. 建立CVS仓库(初始化cvs)
# su cvs
$ cvs -d /cvsroot init
$exit
4. 启动cvs服务器
#cd /etc/xinetd.d
#vim cvspserver
在/etc/xinetd.d/目录下创建文件cvspserver,内容如下:
# default: on
# description: The cvs server sessions;

service cvspserver
{
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvsroot pserver
log_on_failure += USERID
}
修改该文件权限:
# chmod 644 cvspserver
然后重新启动xinetd:
# /etc/rc.d/init.d/xined restart
然后察看cvs服务器是否已经运行:
# netstat -lnp|grep 2401
tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN
则说明cvs服务器已经运行。

二、CVS的日常使用
在使用CVS前,我们还需要建立几个访问CVS仓库的用户:
# useradd zhang
# usermod -G cvs zhang

这里添加了一个用户zhang,并且将该用户添加到cvs组中。
类似可建立多个访问CVS仓库的用户。
好了,现在可以访问CVS仓库了。
首先需要先修改环境变量
# export CVSROOT= :pserver:zhang@
192.168.0.100:/cvsroot
# cvs login
注意:192.168.0.100 是你要访问的服务器的IP地址。
Cvs login 后输入的密码是服务器上设的密码。
如果没有出现错误,就可以访问CVS仓库了。
下面介绍一些常用的命令:
cvs import repository vendor_tag release_tag(s)
将新的原文件导入到CVS仓库。
Repository: CVS仓库中要导入的文件所在的目录。
Vendor_tag: 它可用于导入点上的代码分支。
Release_tag(s): 这是一个发布标记,它可用于简化这一版本
的文件导出。
注:对我们的目标来说,最后两个选项没有多大关系。
例如: # cvs import example ORIGINAL START
cvs checkout
CVS将源文件从仓库中提取出来,然后在本地目录中保存。
在该目录中,读者可以开始自己的开发工作。
例如: # cvs checkout example
cvs commit
CVS将本地目录中所作的改动登记到仓库中。
cvs update
该操作将其他人所作的修改提取出来,以便让本地目录保持
与仓库一致。
cvs log
察看日志。
例如: # cvs log hello.c
cvs diff
将当前目录中的文件与仓库中的任意版本进行比较。
例如: # cvs diff -r 1.1 -d -u hello.c
这个例子中,我请求CVS比较当前目录中的hello.c文件和仓库种版本为 1.1 的文件。-d -u 是CVS所调用的diff命令的参数,他要求进行彻底的比较并生成统一的diff输出格式。
有问题和我联系:我的msn:sunenvoy@msn.com
 
3Q
收藏了先!
 
我也正在有cvs,一起聊聊。qq:19652594
 
接受答案了.
 
后退
顶部