- 浏览: 114798 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
AlexChen_China:
典型的标题党嘛...
不同类型的UML图示 -
wdlfellow:
xfire 真的不错,以前的项目中用axis,开发太麻烦,最近 ...
spring + XFire 构建webservic 相关lib和配置文件
cvs的安装配置
可以查看是否安装cvs
#rpm -qa|grep cvs
如果未安装,到www.cvshome.org下载一个最新的rpm安装即可
一、创建系统帐号
假设目录 /repos/project 作为多人共享项目的版本控制根目录,需要用组权限控制;
/repos/user 作为存放个人独占地版本控制根目录。
管理员帐号为 cvsroot
项目版本控制的公共帐号为 cvsproject
用户版本控制的公共帐号为 cvsuser
相应的用户组为 cvsroot, cvsproject, cvsuser。
# groupadd cvsroot
# groupadd cvsproject
# groupadd cvsuser
设置 cvsroot 属于多个组,这样 cvsroot 用户除了进行系统维护外(如添加新的工程),还可以和其它组用户一样具有管理代码的权限。
# useradd -g cvsroot -G cvsproject,cvsuser cvsroot
# useradd -g cvsproject -s /sbin/nologin cvsproject
# useradd -g cvsuser -s /sbin/nologin cvsuser
用来和CVS用户帐号一一对应的系统帐号。系统帐号禁止登录,密码设置在相应的 CVS 对应帐号文件中设置。
# useradd -g cvsuser -s /sbin/nologin cvs_yan
# useradd -g cvsuser -s /sbin/nologin cvs_wen
二、创建CVS根目录
# mkdir -p /repos/project
# mkdir -p /repos/user
# chown cvsroot.cvsroot /repos/project
# chown cvsroot.cvsroot /repos/user
# chmod 775 /repos
# chmod 2775 /repos/project 或 ( # chmod 775 /repos/project 然后 # chmod g+s /repos/project )
# chmod 2775 /repos/user 或 ( # chmod 775 /repos/user 然后 # chmod g+s /repos/user )
设置 g+s,是为了当设置一个用户属于多个时,操作不同工程时,能够保障文件的组id维持不变。否则可能影响其它用户的权限。
三、加入cvs服务(缺省安装的通常缺省就有cvs服务)
#vi /etc/services
#cvspserver 2401/tcp #pserver cvs service
#cvspserver 2401/udp #pserver cvs service
把cvs服务放到xinetd系统服务中
#cd /etc/xinetd.d
#vi cvspserver
文件内容:
service cvspserver
{
disable = no
port = 2401
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/repos/project --allow-root=/repos/user pserver
#log_on_success += USERID
#log_on_failure += USERID
}
或者,如果cvs仓库比较多可以采用如下格式(server_args 有长度限制):
service cvspserver
{
disable = no
port = 2401
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /real/bin/cvs.run
#log_on_success += USERID
#log_on_failure += USERID
}
注意:#log_on_success += USERID #log_on_failure += USERID 加上这两个属性会导致win系统链接cvs服务器很慢,而在linux系统下没有问题。
vi /real/bin/cvs.run
==============================
#!/bin/bash
/usr/bin/cvs -f \
--allow-root=/repos/project \
--allow-root=/repos/user \
pserver
==============================
四、初始化CVS
初始化CVS切换到cvsroot用户,然后进行初始化
初始化cvs源代码库,此操作生成目录/home/cvsroot/CVSROOT,其下为一些初始化文件
# su - cvsroot
# cvs -d /repos/project init
# cvs -d /repos/user init
在服务器端创建工程
# mkdir test
# chown -R cvsproject.cvsproject test
# chmod -R 2770 test
五、创建 CVS 用户帐号
cvs用户和服务器用户可以是不一样的
设置 CVSROOT目录中config文件的 systemauth = no ,表示必须在passwd中存在用户名称和密码的才可以使用cvs服务器。
# chmod 644 /repos/project/CVSROOT/config
# vi /repos/project/CVSROOT/config
设置 SystemAuth = no
# chmod 644 /repos/user/CVSROOT/config
# vi /repos/user/CVSROOT/config
设置 SystemAuth = no
使用配置文件 CVSROOT/passwd 来管理帐号。
用户管理 CVS默认使用系统用户登录,为了系统安全性的考虑也可以使用独立的用户管理。
CVS用户名和密码保存在CVSROOT目录下的passwd文件中,
格式为: 用户名:密码:系统用户
也就是说,它把CVS用户映射到系统用户,这样我们就可以通过系统用户的权限设置来分配给用户不同的权限,而不需要让用户知道系统用户名和密码。
passwd文件默认并不存在,我们必须自己创建。
文件中的密码字段使用MD5加密,不幸的是CVS没有提供添加用户名的命令,所以我们借用Apache的命令来完成这项工作:
htpasswd命令不是为CVS而设,它不能自动添加映射到的用户名,我们设置好密码后,自己把这部分加上。
创建一个新文件同时创建一个cvs用户
# htpasswd -c /repos/project/CVSROOT/passwd cvs_yan
添加新的cvs用户
# htpasswd /repos/project/CVSROOT/passwd cvs_wen
密码也可以使用下列脚本生成:
vi /real/bin/passwdgen.pl
===================================
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";
===================================
# /real/bin/passwdgen.pl your_password
vi /repos/project/CVSROOT/passwd
===================================
cvs_yan:1rV3EIhq1NczU:cvsroot
cvs_wen:KIutquskGh4YU:cvsproject
anonymous::cvsproject
===================================
$ cat /repos/project/CVSROOT/readers
anonymous
密码也可以使用Linux系统用户的密码,从 /etc/shadow 文件里拷贝出密码
六、配置读写权限
使用CVSROOT目录下的readers和writers文件进行这个工作。这2个文件默认也是没有的,自己创建就可以了。
readers文件记录拥有只读权限的用户名,每行一个用户;
writers文件记录拥有读写权限的用户名,每行一个用户。
注意,readers文件比writers优先,也就是说出现在readers中的用户将会是只读的,不管writers文件中是否存在该用户。
vi /home/cvsroot/wen/CVSROOT/readers
===================================
anonymous
===================================
vi /home/cvsroot/wen/CVSROOT/writers
===================================
cvs_yan
cvs_wen
===================================
七、启动cvs
重新启动xinetd服务,CVS服务器应该能够启动了
# /etc/rc.d/init.d/xinetd restart
或者
# service xinetd restart
检查cvspserver服务是否已经启动
#netstat -l |grep cvspserver
应该有如下结果,表明cvs服务器安装成功:
tcp 0 0 *:cvspserver *:* LISTEN
八、modules文件
更进一步的管理 CVSROOT目录下还有很多其他功能,其中最重要的就是modules文件。
这个文件定义了源代码库的模块,下面是一个例子:
代码:
Linux Linux
Kernel Linux/kernel
这个文件的内容按行排列,每一行定义一个模块,首先是模块名,然后是模块路径,这是相对于CVS根目录的路径。
它定义了两个模块,第一个是Linux模块,它位于Linux目录中,第二个是Kernel模块,这是Linux模块的子模块。 modules文件并非必须的,它的作用相当于一个索引,部分CVS客户端软件通过它可以快速找到相应的模块,比如WinCVS。
九、源代码仓库的备份
完全可以用文件备份的方式进行备份。
需要注意的只是,应该确认备份的过程中没有用户提交修改,具体的做法可以是停止CVS服务器或者使用锁等等。
恢复时只需要把这些文件按原来的目录结构存放好,因为CVS的每一个模块都是单独的一个目录,与其他模块和目录没有任何瓜葛。
甚至只需要在仓库中删除一个目录或者文件,便可以删除该模块的一些内容,不过并不建议这么做,使用CVS的删除功能将会有一个历史记录,而对仓库的直接删除不留任何痕迹,这对项目管理是不利的。
十、移动仓库
与备份相似,只需要把该模块的目录移动到新的路径,便可以使用了。
=================================================================
CVS CVSROOT里的文件
=================================================================
文件 CVSROOT/val-tags 用来确定是否一个TAG是可用的;
文件 CVSROOT/history 用来记录CVS的访问记录。
文件 CVSROOT/cvsignore 设置版本控制过程中,忽略的文件。更新文件时,这些文件将被隐藏,不在显示为 "?" 类型文件。例如:
*.db
*.info
*.[Sp]o
*.core
*.aps
*.clw
*.exe
*.ncb
*.obj
*.opt
*.plg
Debug
Release
文件 CVSROOT/cvswrappers 匹配文件名,并作相应处理。如: -k b 即以二进制方式处理文件。
文件 CVSROOT/modules 设置数据仓库中的模块名,可以通过命令:“cvs co -c”察看当前数据仓库(repository)中包含的模块/工程名称。也可以在调整服务器端目录结构时,设置 modules 来保持和以前设置的兼容性。
文件 CVSROOT/checkoutlist 列在 checkoutlist 中的文件,在 checkin 后,能够自动在服务器 CVSROOT 目录中重建。
文件 CVSROOT/commitinfo
Commit 事件要触发三个脚本文件,依次是 commitinfo, verifymsg, loginfo。其中先遍历整个目录树对所有需要 commit 的文件执行 commitinfo文件。再分别针对每一个目录执行 verifymsg, loginfo 脚本。
commitinfo 完成的功能:通过用户主机名、用户名来检查权限;确认CVS服务器的版本号不低于某个版本;将遍历目录树的结果(最后一个目录名)记录下来,以便接下来运行 verifymsg, loginfo的脚本能够确认运行结束等。
相关文件:CVSROOT/commitcheck,CVSROOT/cvs_acls.pl,CVSROOT/avail,CVSROOT/commit_prep.pl,CVSROOT/exclude,CVSROOT/cfg.pm,CVSROOT/cfg_local.pm
文件 CVSROOT/avail,用以精细控制权限。例如:
group|meisters|peter,jdp,markm,joe
# Pick up the list of bad users from ncvs/CVSROOT/badcommitters See that
# file for details
group|penaltybox|!badcommitters
unavail
avail||CVSROOT
avail||distrib
avail||doc
avail||ports
avail||src
unavail||src/contrib/binutils,src/contrib/file
avail|obrien|src/contrib/binutils,src/contrib/file
unavail||src/contrib/tcpdump
avail|fenner,nectar|src/contrib/tcpdump
avail||www
avail|:meisters
unavail|:penaltybox
文件 CVSROOT/cfg.pm,是 perl脚本的核心包。可以根据需要加入所需的代码。
文件 CVSROOT/verifymsg
相关文件:CVSROOT/logcheck。
用于检查和格式化 commit log。禁止在版本控制提交时,使用空的 commit log。对于 wincvs 在用户不提交 commit log 时,会自动使用“no message”作为commit log。
文件 CVSROOT/loginfo
相关文件:CVSROOT/log_accum.pl,CVSROOT/cfg.pm ,CVSROOT/cfg_local.pm。
将 commit log 分门别类存储在目录 CVSROOT/commitlogs 下,并同时通过邮件外发。为了防止一次事件触发多次的邮件外发,该脚本利用到 commitinfo 的运行结果,只有确认到了目录树的最后,才发送邮件。 模块和存储日志文件以及用户邮件列表在文件CVSROOT/cfg_local.pm中定义。
发表评论
-
cvs远程认证
2007-12-27 14:26 1628使用cvs本身的远程认证 ... -
update—同步工作目录与仓库
2007-12-27 14:24 956update [-ACdflPpR] [-I nam ... -
server & pserver—充当 stdin/stdout 客户端的服务器
2007-12-27 14:22 903pserver [-c path] serv ... -
release—标明模块不再使用
2007-12-27 14:20 901release [-d] directories.. ... -
rdiff—发行版之间 'patch' 格式的差异
2007-12-27 14:18 1306rdiff [-flags] [-V vn] (-r ... -
ls & rls 列出仓库里的文件和目录
2007-12-27 14:16 1450ls [-e | -l] [-RP] [-r tag ... -
log—打印文件的日志信息
2007-12-27 14:10 1376语法: log [options] [fil ... -
import—导入源码至 CVS
2007-12-27 14:09 2138语法: import [-options] repo ... -
history—显示文件和用户的状态
2007-12-27 14:03 1415语法: history [-report] [-fl ... -
export—从 CVS 导出源码
2007-12-27 14:02 3144语法: export [-flNnR] (-r re ... -
diff—显示修订版间的差异
2007-12-27 14:00 1555语法: diff [-lR] [-k kflag] ... -
commit—将文件提交到仓库
2007-12-27 13:58 1858语法: commit [-lnRf] [-m ... -
checkout—检出用于编辑的源码
2007-12-27 13:43 1055语法: checkout [options] mod ... -
admin–管理
2007-12-27 13:34 937需要: 仓库,工作目录。 修改: 仓库。 ... -
通用命令选项
2007-12-27 13:32 827这一节来说明 `command_options',它通用于一些 ... -
全局选项
2007-12-27 13:29 822有效的 `cvs_options' (作用于左边的 `cvs_ ... -
默认选项与 ~/.cvsrc 文件
2007-12-27 13:27 1025有一些 command_options 使 ... -
cvs常用命令
2007-12-27 10:37 3840很多cvs命令都有缩写形 ...
相关推荐
很详细的Eclipse3.4下CVS的安装过程
CVS 安装配置 ................
Redhat linux enterprise 5 cvs安装配置全过程,手把手教你配置
简单的CVS在XP下安装及配置笔记,图文并貌。
CVS安装总结,虚拟机加红帽6.2的环境,实体机加5.2的环境都有验证过。
教你一步步在Linux下安装配置cvs
CVS的一些配置操作(环境搭建),使用操作文档
详细讲解了subversion cvs的安装配置使用以及与apache、Eclipse的整合!我认为是讲解svn和cvs的超级好的资料。
windows下CVS安装和简单配置 windows下CVS安装和简单配置 windows下CVS安装和简单配置
linux下面CVS服务器的安装以及使用wincvs从入门到精通
CVS配置 CVS配置 CVS配置 使用的配置
centos5 cvs安装,一步一步教程,明了简单。还有用户管理说明。
创建CVS用户: 我预先设定的CVSROOT的目录为/home/cvsroot,在/etc/bashrc或者/etc/profile里面写入:export CVSROOT=/home/cvsroot,然后使用env|grep CVSROOT来查看环境变量是否生效。 下一步就是创建CVS用户: ...
安装配置CVS,要用播放器打开。
此文档是图解说明CVS的安装与配置,还有就是CVS的简单使用方法。
CVS 安装配置使用 带图 简述: CVS (Concurrent Version System),可翻译成并行版本系统,它主要用于版本的管理,尤其在多人团队合作的开发模式中作用巨大。在团队合作开发中,要对整个项目的各个文件进行控制是...
CVS在Solaris下的安装要比在Windows下的安装复杂的多。本文档以实例的形式详细讲述了在Solaris5.10下安装CVS1.1.3并进行具体配置的过程。
Eclipse3[1].4之CVS的安装与配置.pdfEclipse3[1].4之CVS的安装与配置.pdfEclipse3[1].4之CVS的安装与配置.pdf
windows下cvs服务器安装配置 安装cvsnt 配置cvsnt