第一部分 CVS服务器的配置
1、 CVS简述:
CVS是Concurrent Versions System的缩写,它是目前比较流行与优秀的版本管理与控制工具,它深受大多数开发人员与系统管理的喜爱,同时也是用来管理其它日常文档(如word工作文档之类)的一个强有力的工具。这一部分将对CVS服务器的安装、配置与使用方法进行简单、扼要的介绍,以帮助大家尽快的使用CVS来进行一些版本的管理与控制工作。
2、 CVS服务器的安装
默认情况下,CVS在CentOS中已经安装,这一点可以通过在Linux命令行的情况下运行:
rpm –q | grep cvs
如果出现CVS的版本信息就证明已经安装成功了。
CVS服务器安装包可以从网上的很多地方下载,也可以到CVS的官方网站进行下载。根据你所使用的系统,下载相应的版本,然后进行安装。因为我们的项目是在Redhat Linux下使用CVS服务器进行版本管理,所以本文将主要基于Redhat Linux进行介绍。首先下载CVS服务器的rpm包,当然也可以下载其它方式的包如源程序包,然后采用以下命令进行安装:
yum install cvs
3、 CVS服务器的配置
安装完之后的第一件事就是要配置CVS服务器的配置文件,使其能正常的工作。首先在/etc/services文件中添加cvspserver,使其成为Linux的一种服务也就是cvs服务器例程的入口,配置如下:
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations
如果文件中已经存在上面的两行文字,就不用添加了。
一般不用默认端口,需要自己修改。
4、 配置xinetd,用xinetd来启动CVS验证服务器:如果xinetd没有 yum install xinetd安装一下
进入到/etc/xinetd.d/目录,然后编辑一个文本文件,名字一定要与/etc/services中的入口名字cvspserver一致,所以这里用cvspserver作为文件名,文件的内容如下所示:
service cvspserver
{
port = 19150
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/hiknowledge pserver
}
编辑文件之后测试cvspserver服务是否配置成功。
执行
/etc/init.d/xinetd restart
重新启动服务,启动成功之后,测试是否启动了
netstat -l | grep cvs
telnet
5、 配置CVS用户:
首先建立一个用户组cvs,可以使用groupadd或者addgroup命名,也可以直接编辑/etc/group文件添加这个组,然后添加一个用户cvsuser:
groupadd cvs
useradd cvsroot –g cvs
passwd cvsroot
设置新的密码。
在/home目录下建立cvsroot目录(也可以在其它的目录下建,但是应该和cvspserver文件中的选项一致),然后修改/home/cvsroot的属主及属性:
cd /home
mkdir cvsroot
chown –R cvsroot:cvs cvsroot
chmod –R 771 cvsroot (rwx 421 用户,用户组,其他用户)
6、 初始化CVS服务器
安装完CVS服务器之后的另一件重要的事情就是要初始化CVS服务器的根目录,以后创建的CVS项目都将建立在这个目录下,采用的命令如下:
cvs –d /home/cvsroot init
如果没有任何提示,表示初始化成功。初始化成功之后,会在/home/cvsroot目录中创建CVSROOT目录,目录中有如下文件:
-r--r--r-- 1 root root 493 Apr 5 20:19 checkoutlist
-r--r--r-- 1 root root 693 Apr 5 20:19 checkoutlist,v
-r--r--r-- 1 root root 760 Apr 5 20:19 commitinfo
-r--r--r-- 1 root root 960 Apr 5 20:19 commitinfo,v
-r--r--r-- 1 root root 527 Apr 5 20:19 config
-r--r--r-- 1 root root 727 Apr 5 20:19 config,v
-r--r--r-- 1 root root 753 Apr 5 20:19 cvswrappers
-r--r--r-- 1 root root 953 Apr 5 20:19 cvswrappers,v
-r--r--r-- 1 root root 1025 Apr 5 20:19 editinfo
-r--r--r-- 1 root root 1225 Apr 5 20:19 editinfo,v
drwxrwxr-x 2 root root 4096 Apr 5 20:19 Emptydir
-rw-rw-rw- 1 root root 0 Apr 5 20:19 history
-r--r--r-- 1 root root 1141 Apr 5 20:19 loginfo
-r--r--r-- 1 root root 1341 Apr 5 20:19 loginfo,v
-r--r--r-- 1 root root 1151 Apr 5 20:19 modules
-r--r--r-- 1 root root 1351 Apr 5 20:19 modules,v
-r--r--r-- 1 root root 564 Apr 5 20:19 notify
-r--r--r-- 1 root root 764 Apr 5 20:19 notify,v
-r--r--r-- 1 root root 649 Apr 5 20:19 rcsinfo
-r--r--r-- 1 root root 849 Apr 5 20:19 rcsinfo,v
-r--r--r-- 1 root root 879 Apr 5 20:19 taginfo
-r--r--r-- 1 root root 1079 Apr 5 20:19 taginfo,v
-rw-rw-rw- 1 root root 0 Apr 5 20:19 val-tags
-r--r--r-- 1 root root 1026 Apr 5 20:19 verifymsg
-r--r--r-- 1 root root 1226 Apr 5 20:19 verifymsg,v
这样目录/home/cvsroot就成为CVS服务器的根目录,以后创建的目录都将默认的存放在这个目录下。
touch passwd readers writers
htpasswd passwd user1 通过对passwd文件加密验证的方式创建cvs用户,如果没有安装htpasswd,
请安装yum info httpd
passwd文件内容:
hx:MA8JsqktaUq4Y:cvsroot 此处最后一个cvsroot表示hx账号有系统cvsroot的权限
再在writers中加hx,保证hx用户有写cvs repository的权限(重要!)
7、 登录cvs服务器(在Linux或其它Unix系统下进行登录的情况):
输入如下命令:
cvs -d :pserver:cvsuser@localhost:/usr/cvsroot login
提示输入密码,输入上面设置的密码,如果没有任何提示,就证明成功登录了
登录成功之后在当前用户的$HOME目录中生成.cvspass文件,可以利用vi对文件进行察看。
由于以“.”开头的文件在Linux中是隐藏的,所以可以利用如下命令进行察看:
ls –a
这个文件记载了用户的登录信息。执行注销命令可以删除该文件中的登录信息
cvs -d :pserver:cvsuser@localhost:/usr/cvsroot logout
下面对登录命令的语法进行说明:
其中,:pserver表示采用pserver方式进行用户登录认证,一般的CVS服务器都采用这种方式,当然也可以采用其它方式,具体参考相应的资料;
:cvsuser表示要登录的用户名,只要是cvs组的成员都可以,如:cvsuser;
@host表示要登录的服务器,可以是DNS名,也可以是IP地址,如:192.168.0.1;
:/home/cvsroot表示CVS在服务器上的目录,也可以是其它目录(由第6中你所指定的用来做init初始化的目录决定);
提示:
a、也可以把export CVSROOT=:pserver:[email protected]:/usr/cvsroot这一句直接写在用户的初始化文件中(如:.bash_profile),这样用户每次登录时,只需输入:
cvs login(如果不加到环境变量每次都要敲-d后面的内容)
然后输入相应的口令就可以登录到cvs服务器上。
b、如果是本地登录,可以直接把export CVSROOT=/usr/cvsroot这一句写在用户的初始化文件如:/etc/profile中;然后执行如下命令使环境变量生效:
source /etc/profile
8、 向CVS添加新的项目模块
一般我们都已经有一个或多个项目了,这样我们可以用下面步骤生成一个新的CVS项目。将一个工程文件置于CVS中进行版本控制,在CVS 术语中称作导入(import)。从名字上就可以看出,在导入前需要为此作些准备工作。
输入操作的基本要求是有个"干净"的目录结构。"干净"的意思是不需要版本控制的文件都被移走了(如编译生成的文件,备份文件等等)。如果工程已经开始一段时间了,这就显得很重要。在目录中也许有些是不打算将其置于版本控制下的文件,但是又想将他们放在这里,这种情况下,你要在输入之前将它们移走,然后再移回来。
注意的是CVS 认为空目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录,需要在其下创建一个哑文件。建议你创建一个名为 README.txt 的文件,其内容为对目录的简要说明。
进入到已有项目的目录,比如叫 cvstest:
cd /home/cvsuser/cvstest
运行命令将项目文件导入到cvs仓库中:
cvs import -m "this is a cvstest project" cvstest tengtu start
说明:import 是cvs的命令之一,表示向cvs仓库输入项目文件.
-m参数后面的字串是描述文本,对项目进行描述,如果不加 -m 参数,那么cvs会自动运行一个编辑器(一般是vi,但是可以通过修改环境变量EDITOR来改成你喜欢用的编辑器)让你输入信息,cvstest
cvs -d :pserver:hx@ip:/home/cvsroot add test.doc
注意eclipse的cvs插件,repository path 就是/home/cvsroot
假设eclipse里java project为 TestCVS
那么在cvs服务器的路径就是/home/cvsroot/TestCVS
清除工作:
userdel -f cvsroot (提示用户登录也可以删)
groupdel cvs
说明:具体代码存的路径和开始配置的并没什么关系
主要看cvs -d init的目录
注意权限注意selinux disable