Linux 现在是占垄断地位的开放源代码操作系统。
RedHat 是 Linux 的主要分发商之一。
CVS 包含在 RedHat Linux 7 分发版中。
CVS for Linux 非常稳定、可靠并且可伸缩,对于个人开发者、小规模的小组以及大规模、分布式小组都很有用。
Application Developer 运行在 RedHat Linux 7 上。
在使用 Application Developer 时,您可以使用 CVS 作为本地资源库或者作为整个小组的共享资源库。
然而,安装和配置 CVS for Linux 并非无足轻重,并且相关的好文档极少。下面的一步一步的指导应该能够帮助系统管理员为使用 Application Developer 的开发者配置 CVS for Linux。
在 RedHat Linux 7 上安装 CVS
CVS 版本 1.11.1.3 可能已经缺省安装在您的 RedHat Linux 7 上了。要检查是否已安装了 CVS,请输入命令 rpm -qa|grep 'cvs'。如果返回的是 cvs-1.11.1-3,就意味着已经安装了 CVS。
如果这条命令没返回任何内容,您就需要安装 CVS。CVS rpm 通常位于 RedHat Linux 7 分发版的安装 CD #2 上的 RedHat/RPMS 目录中。将该 CD 安装到 /mnt/cdrom 后,使用 rpm 命令安装 CVS:rpm -i /mnt/cdrom/RedHat/RPMS/cvs-1.11.1p1-3.i386rpm
Failed to create lock directory for /home/cvs/repository/...: Permission denied.
Failed to obtain dir lock in repository /home/cvs/repository/...
初始化资源库:
cvs -d /home/cvs/repository init
注销用户 cvs。
修改 xinetd 服务以启用 pserver 协议
以 root 用户的身份登录。
在目录 /etc/xinetd.d 中创建一个名为 cvspserver 的文件,文件内容如下:
# default: off
# description: An cvs server.
service cvspserver
{
disable = no
socket_type = stream
protocol = tcp
user = root
wait = no
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvs/repository pserver
log_on_success +=USERID
log_on_failure += USERID
}
打开 /etc/services 并核实存在下面这两行代码。如果不存在,则添加它们:
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp # CVS client/server operations
重新启动 xinetd 服务:
service xinetd restart
建立用户环境
打开文件 /etc/profile。您应该能在该文件中看到下面这些行:
USER='id -un'
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
在环境变量 MAIL 后添加一行内容:
CVSROOT=":pserverUSER@localhost:/home/cvs/repository"
在该文件中,您还应该看到这样一行:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
修改这一行并将 CVSROOT 添加到导出(export)列表中,如下所示:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CVSROOT
用本地用户测试安装
Developer 1 以 cvsdev1 的身份登录。
通过输入下面的命令来确保环境变量是正确的:
echo $CVSROOT
它应该返回与用户名有关的象下面这样的结果:
:pserver:cvsdev1@localhost:/home/cvs/repository
用下面的命令登录 CVS:
cvs login
您将被提示提供密码。输入您的 Linux 密码。
创建一个名为 project1 的目录:
mkdir project1
在目录 project1 中创建一个名为 Test.java 的文件,文件内容如下:
public class Test{
public String sayHello(String name){
return "Hello"+name;
}
}
使用这些命令将 Test.java 导入到 CVS 资源库中的模块 project1:
cd /home/cvsdev1/project1
cvs import -m "import Test.java" project1 wsadgroup release1_0
CVS 导入操作完成后,您应该会看到一条这样的消息:
N project1/Test.java
No conflicts created by this import
备份您的源代码:
cd
mv project1 project1.sav
从 CVS 资源库检出 project1:
cd
cvs checkout project1
您应该会看到在 /home/cvsdev1 下创建了一个名为 project1 的新目录,该目录下有一个文件 Test.java 和一个目录 CVS。
Connection type
您想用来连接到 CVS 服务器的协议。缺省值是 pserver,它代表密码服务器协议。这是我们刚才在 RedHat Linux 7 中设置的连接类型。
User name
您用来登录到 CVS 服务器中的用户名。例如我们刚才在 RedHat Linux 7 中定义的 cvs 组中的 cvsdev1 或 cvsdev2。
Host name
您想连接到的服务器的机器名。它将是 RedHat Linux 机器的主机名或 IP 地址。
Repository path
服务器上的资源库位置的全限定路径。对于我们的安装和配置,它将是:/home/cvs/repository。
CVS location
Application Developer 用来连接到资源库的完整位置。当您填好前面几个字段时,它将被动态构建。
Validate on finish
它在返回到 IDE 前测试资源库连接。请一直启用它作为第一次连接性测试。
图 1.
:pserver:cvsroot@host:/cvsroot。在认证方式中选择passwd file on the cvs server,
在下面的版本号中选择合适的版本,执行Admin菜单中的login,在提示框输入口令,如果
Output窗口出现以下提示:
*****CVS exited normally with code 0*****
就表示我们现在可以在Windows下使用cvs服务了。[c&v/]
如何使用wincvs把自己的项目加到cvs中去
1) Make sure that all the source files you want to check into CVS are on one directory (or
subdirectories). This directory (folder) should NOT contain anything else! That is, it should not
contain executables, object files (.o), class files (.class), etc. It should only contain the
一切都阳春白雪,可以埋头写程序了?只是cvs还有一个小小的DoS漏洞要跟大家说一下:(
每个cvs的操作过程会以操作用户的身份在/tmp下临时建一个锁定了的目录cvs_servPID,这时如果有人建
了大量的同类文件就会使cvs的操作出错,会提示:
cannot change permissions on temporary directory
Operation not permitted
下面是测试的perl程序:
#!/usr/bin/perl
#$min和$max的值根据实际情况修改
$min=400;
$max=4000;
for ($x=$min;$x<=$max;$x++) {
open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!";
chmod 0600, "/tmp/cvs-serv$x";
close CVSTMP;
}