您的位置:首页 > 其它

cvs服务器配置与客户端使用简述

2009-06-03 12:29 453 查看
这样的题目在网上搜索一下可以找到一大堆,以下是我自己的过程。

我的CVS服务器的操作系统是redhat 9.0,客户端分别在windows xp和另一台redhat 9.0的电脑上测试。两个redhat 9.0的电脑都使用光盘中自带的CVS 1.11.2版本。windows xp中使用的是CVS 1.11.14,下载地址是http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-woe/cvs-1-11-14.zip。

CVS服务器配置

服务器配置,就是在作为服务器端的电脑上启动相应的服务。以下是全部的操作步骤,CVS的info文档中有最完整最详细的讲解。

第一步:

检查是否安装cvs。在shell中输入#rpm –qa cvs,如果发现cvs没有安装,放入redhat9安装盘,输入命令#find –name “cvs*”,找到cvs的rpm安装包,安装cvs。

第二步:

写cvspserver的配置文件。进入/etc/xinetd.d/,新建cvspserver文件,内容如下:

service cvspserver

{

flag = REUSE

port = 2401

disable = no

socket_type = stream

wait = no

user = root

env = HOME=

server = /usr/bin/cvs

server_args = -f --allow-root=/cvsroot pserver

}

注:xinetd是一个扩展Internet服务守护进程(extended Internet service daemon)。具体可以查看xinetd的man手册,在xinetd.conf的man手册中也可以查到它的配置文件的详细语法。在上面新建的这个cvspserver文件中,大括号必须单独作为一行,等号左右都要有空格,这不是风格的问题,而是xinetd的服务配置文件的语法要求。看看/etc/xinetd.conf文件会加深一些理解。文件中service后面跟的那个服务名称必须要在/etc/services文件中出现,所以,第三步:

第三步:

检查/etc/services中是否有cvspserver服务。打开/etc/services文件,用cvs关键字搜索,如果找到以下两行:

cvspserver 2401/tcp # CVS client/server operations

cvspserver 2401/udp # CVS client/server operations

则可。如果没有找到,手动加上去。

第四步:

重新启动xinetd服务。使用#service xinetd restart或者# /etc/rc.d/init.d/xinetd restart。

第五步:

输入命令# netstat –l | grep cvs,应该能看到以下一行:

tcp 0 0 *:cvspserver *:* LISTEN

如果没有看到,可以是防火墙的问题,输入#setup,在Firewall Configuration中选择Customize,放行2401端口。此时,cvspserver服务已经启动,下面的工作是初始化cvs的repository以及设置访问权限。使用户能通过网络使用cvs。

第六步:

新建一个组,用来使用cvs服务,为组中新加一个成员。

#groupadd cvs

#useradd –g cvs –G cvs cvsroot

第七步:

初始化CVS文档根目录:

#mkdir /cvsroot

# cvs –d /cvsroot init

此时会在/cvsroot下生成CVSROOT目录。

第八步:

分配用户名。这些用户名是CVS服务器的用户,不是服务器电脑上的操作系统用户。详见CVS的INFO文档。CVS用户信息保存在CVSROOT目录下的passwd文件中,这个文件需要手动创建:

# emacs /cvsroot/CVSROOT/passwd

格式为:

CVS用户名:密码(可选):系统用户名(可选)

表示CVS用户登录后相当于指定的系统用户的权限。例如用户名为grid,密码为grid216。在passwd文件中加上这样一行:

grid:gmnN.vQtuzJLM:cvsroot

其中密码的密文可以用下面的程序生成。

#define _XOPEN_SOURCE

#include <stdio.h>

#include <time.h>

#include <unistd.h>

int main(int argc, char **argv) {

char salt[4];

if(argc != 2) {

perror("usage: passgen passwordtext");

exit(1);

}

srand(time(0));

sprintf(salt, "%c%c", rand() % 26 + 'a', rand() % 26 + 'a');

printf("%s/n", crypt(argv[1], salt));

return 0;

}

编译连接时,使用命令:gcc –lcrypt passgen.c –o passgen

然后执行:

# ./passgen grid216

即可生成密码的密文。

此时,应该可以从客户端访问CVS服务器。

在客户端(linux redhat9):

第一步:

设置环境变量,不用设置也可以,但每次需要输入很长的服务器文档根目录,很不方便。因此设置CVSROOT环境变量非常方便:

# export CVSROOT=:pserver:grid@192.168.0.7:/cvsroot

这样的话下一次登录这个环境又得重新设置。可以像下面这样:

# emacs ~/.bash_profile

然后在.bash_profile中加上

export CVSROOT=:pserver:grid@192.168.0.7:/cvsroot

再重新载入使之生效:

# source ~/.bash_profile

第二步:

登录CVS服务器:

# cvs login

提示输入密码,输入密码后,如果没有错误提示,就是登录成功了。

在windows xp客户端中:

D:/cvs>set CVSROOT=:pserver:grid@192.168.0.7:/cvsroot

D:/cvs>cvs login

Logging in to :pserver:grid@192.168.0.7:2401/cvsroot

CVS password:

D:/cvs>

这样,即表示登录成功。

在客户端上新建一个文件夹MyCode。用来演示CVS的使用。这里选择使用windows xp客户端。

D:/cvs>cd ..

D:/>path d:/cvs;%path%

D:/>mkdir MyCode

D:/>cd MyCode

新建代码文件test.c:

#include <stdio.h>

int main() {

printf("Initial Edition");

return 0;

}

导入项目:

D:/MyCode>cvs import -m "Initial Edtion" MyCode vendor-tag release-tags

N MyCode/test.c

No conflicts created by this import

此时,服务器中的/cvsroot目录下多了MyCode目录。客户端上的这个MyCode此时就没有什么作用了,可以删掉。把客户端的MyCode目录删除。

check out一个项目:

D:/>cvs co MyCode

cvs server: Updating MyCode

U MyCode/test.c

修改一个后再check in:

把test.c修改为:

#include <stdio.h>

int main() {

printf("Initial Edition");

printf("Added in Second Edition");

return 0;

}

check in 一个项目:

D:/MyCode>cvs ci -m "second edition" test.c

Checking in test.c;

/cvsroot/MyCode/test.c,v <-- test.c

new revision: 1.2; previous revision: 1.1

done

删除本地的working copy:

D:/MyCode>cd ..

D:/>cvs release -d MyCode

You have [0] altered files in this repository.

Are you sure you want to release (and delete) directory `MyCode': n

** `release' aborted by user choice.

上面回答n没有删除working copy。

以指定版本号提交:

D:/MyCode>cvs ci -m "commit with given version number" -r 2.0 test.c

Checking in test.c;

/cvsroot/MyCode/test.c,v <-- test.c

new revision: 2.0; previous revision: 1.2

done

另外,网上有人介绍使用wincvs和toris cvs的,我下载wincvs试用了一下,觉得界面复杂,还不如命令行中使用来得简明。wincvs的下载地址是:http://wincvs.uptodown.com/en/free-download/。 wincvs的运行需要python支持。所以还需要安装python。在http://www.python.org/可以下载python。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: