|
CVS server 及 client
虽然前面已经有 CVS 的文章, 不过弟还是把之前整理的旧文章拿来
献丑一下, 因为最近比较没时间整理, 先简陋一点, 之后会和网络广
播的部份一起整修一下.
duan [email protected]
cvs server 安装及设定
基本设定的部份主要是参考 Study-area 及 CVS 的 howto. 原则上 1-2 步在 redat 里是预设已经 ok 的.
进阶设定是参考 "Open Source Development with CVS" 2nd Edition, 出版社 CORIOLIS, 作者 Karl Fogel, Moshe Bar. 天珑买的.
基本设定:
1. 安装 CVS 的 RPM
2. 检查 /etc/service 的设定, 搜寻 cvspserver , 看是否有以下两行
cvspserver 2401/tcp
cvspserver 2401/udp
若没有请加上.
3. 检查 /etc/xinetd.d/ 是否有 cvspserver 这个档, 并检查内容是否类似如下
service cvspserver
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root /home/cvs pserver
log_on_success += USERID
log_on_failure += USERID
}
其中 log 的方式视需要调整, server_args 则是呼叫 cvs 时要传给
cvs 的参数, 也是视需要调整.
4. 重新启动 xinetd
/etc/rc.d/init.d/xined restart
5. cvs 会在 2401 port 接受服务, 因此若有防火墙的话, 请打开这个 port.
6. 选择一个目录当 cvs root , 如 /home/cvs
7. 设定环境变量 CVSROOT , 可以设定在 /etc/profile , 然后使其生效
export CVSROOT=/home/cvs
8. 初始化 cvs , 然后在指定的 CVSROOT 就会出现 CVSROOT 这个目录
cvs init
9. 指定一个群组给需要使用 cvs 的使用者, 假设为该群组叫 cvs
groupadd cvs
10.将要使用 cvs 的使用者加入该群组, 编辑 /etc/group 或使用 userconf
cvs:GID:user1,user2,user3
11.将 CVSROOT 设为该群组, 让使用者能新增项目
chgrp -R cvs /home/cvs
chmod ug+rwx /home/cvs/CVSROOT
12 测试, 假设有个使用者 cvsuser, server IP 为 1.2.3.4 尝试 login
cvs -d ":pserver:[email protected]:/home/cvs" login
然后会询问密码, 输入该使用者在 server 上的密码, 若正确不会秀出
任何讯息, 失败则会显示错误讯息.
进阶设定:
1. 为避免其它人经由 cvs 来猜系统账号密码, 建议将 cvs 账号和系统帐
号分开.
a. 编辑 /home/cvs/CVSROOT/passwd (该档原本不存在)
格式为 cvs账号:密码:系统账号
ex: cvsusercgaer5321dsa:cvs
cvsuser 为登入 cvs 的账号, 系统账号不需要有这个账号.
xcgaer5321dsa 是登入的密码, 已经经由 md5 编码过.
anonymous 是登入后对应到系统 cvs 这个账号的权限
b. 编辑 /home/cvs/CVSROOT/config
将 #SystemAuth=no 前的注解拿掉. 该行的意思是当登入的账号
不在 cvs 的 passwd 里时, 是否要对应到系统账号.
2. 增加 anonymous 登入, 其权限为只读
a. 编辑 /home/cvs/CVSROOT/passwd
新增 anonymous:ZPBkv2YaaScrw:nobody
ZPBkv2YaaScrw 是 anonymous 经由 md5 编码后的结果.
该行表示可以用 账号:anonymous 及密码:anonymous 登入, 权限是 nobody
b. 编辑 /home/cvs/CVSROOT/readers
新增 anonymous
该档列表内所有账号都只有只读权限, 格式为每行一个账号.
============================================================
client 端的工具有很多种, 至 freshmeat.net 搜寻 cvs 会有一堆.
这里介绍几种试用过的. 其中我试过的工具, 都无法列出该 server
上有那些项目, 连 command line 都没有, 我想是没有提供这个功
能, 一般都是使用者知道某个项目然后想加入再申请的吧.
1. command line:
这个大概是最原始但却要记很多指令的方式.
大致上的指令是如下的格式
cvs -d "CVSROOT" command
若有用环境变量指定 CVSROOT , 则可以省略 -d "CVSROOT" 的参数,
CVSROOT 通常为 ":pserver:USERNAME@SERVER_IP:CVS_PATH" 的格式.
cvs -d "CVSROOT" login : 登入
cvs -d "CVSROOT" import profile : 将 profile 这个专案新增到 server 上
cvs -d "CVSROOT" checkout profile : 将 server 上 profile 专案整个抓下来
cvs -d "CVSROOT" logout : 注销
2. lincvs :
这是我测试几个工具里较好用的. 有 RPM 档可以装.
安装好以后, 执行 lincvs .
在 Option 里的 profile 设定, name 可以不用改, user 是要登入用的
username, server 填 server ip, Repository 填 server 上的 CVSROOT ,
如上例用的 /home/cvs . Access Method 要用 password , 然后选择右方
Modify 将设定储存, 然后离开设定画面.
然后选择 project 的 checkout, 选择项目名称 (CVS Module 栏) , Method
记得要选 password, 然后再选 local 端要放项目的路径, 按下 ok 后就会自
动登入问密码, 填完密码, 就会问说是否要把这个项目加入 Workbench ,加入
后就会在左边的 frame 出现该项目目前的内容.
再进一步的使用方式等我使用过后再补上来
3. gcvs :
真是一个缓慢的 GUI 程序, 而且设定也不太会设, 至少我无法连上. 有 RPM.
4. Cervisia:
这是 Redhat 7.3 内附的 client , 有专门的网页介绍如何使用.
不过在用 pserver 来连的情况下, 需要先用 command line 来 login ,
才会在 cervisia 里出现联机记录, 而且连上后我还是不太会用, 搞了很
久终于放弃, 不知道为什么要内附这个而不附 lincvs ,可能是这个比较华
丽的感觉吧.
5. Web 界面:
freshmeat.net 上有几个 web 界面的, 有大概看一下的.
a) cvsweb: 这是用 perl 写的 cgi , 我不会 perl , so....
b) chora : 这是用 php 写的, 有 demo site , 看起来不错, 可是安装麻烦, so..
6. WinCVS: 这是在 windows 上的 client , 在此省略.
=========================================================
进阶 command line 指令
预设已设定 CVSROOT 变量, 以下一律不加上 -d 的参数.
另外这些指令必需在本机预备要放项目的目录下执行, 否则大部份的指令会
造成非预期的结果 (不会很严重, 最多是下载许多不用的程序代码, 或得到一
堆错误的讯息)
cvs login : 登入 cvs server , 输入密码
cvs checkout project : 汇出 project 的内容
ex: cvs checkout lyric
cvs co lyric
cvs import -m "some descript" project vendortag releasetag
ex: cvs import -m "test project" lyric duan test
cvs status <project> : 列出该 project 内每个档案的记录
cvs history <project> : 列出该 project 内每个档案的修改历史记录
cvs annotate <pooject> : 列出该 project 内每个档案最后一次修改的记录
摘自 LYI学园 http://liy.slat.org/ |
|