作者yellowfishie (喵喵喵喵~~~)
标题[教学] CVS server/client 设定
时间Thu Feb 10 17:37:13 2005
‧CVS Server 设定:
1. 安装 CVS (以 Sun 系统为例):
pkgadd -d cvs-1.11.17-sol9-sparc-local
2. 环境设定:
mkdir /export/home/cvsroot
groupadd cvs
chmod 771 /export/home/cvsroot
3. 产生 CVSROOT:
cvs -d /export/home/cvsroot init
chown -R root:cvs /export/home/cvsroot
4. 设定 CVS server
vim /etc/inetd.conf
cvsserver stream tcp nowait root /usr/local/bin/cvs cvs -f \
--allow-root=/export/home/cvsroot pserver
vim /etc/services
cvsserver 2401/tcp # cvs server tcp port
cvsserver 2401/udp # cvs server udp port
5. 将 CVS client (以 user1、user2 为例) 加入 cvs group:
vim /etc/group
cvs::896:user1,user2
6. 重新启动 inetd
/etc/init.d/inetsvc stop
/etc/init.d/inetsvc start
server 设定完毕 :)
‧CVS client 设定:
1. 设定 CVSROOT:
export CVSROOT=:pserver:eda5.ee.ntu.edu.tw:/export/home/cvsroot/
2. 登入 CVS 系统:
cvs login
3. 将要由 CVS 控管的程式目录 (以目录 test 为例) 加入 CVS 系统:
cd test
cvs import -m "this is a test project" test v_0_0_0_1 start
4. 移除本地的原程式目录 (先备份):
rm -r test
5. 从 CVS 下载控管的版本:
cvs checkout test
client设定完毕 :)
‧client 常用指令:
‧更新 local 的档案,和 CVS 系统档案同步:
cvs update
‧看看 CVS 有没有更新的档案:
cvs status
Up-to-date :表示 local 的档案是最新的。
Locally Modified:表示 local 的档案你曾经修改过,但还没有上传,
local 的版本比 CVS 系统还新。
Needing Patch : 表示有个组员已经修改过该档案并且已经上传了,
local 的版本比 CVS 系统里的旧。
Needs Merge :表示 local 的档案你曾经修改过,还没有上传,
但是有个组员也修改了这个档案,而且还上传给 CVS 系统了。
‧修改一个档案後 (以 test.c 为例) 上传至 CVS 系统:
cvs commit -m "add a command" test.c
‧比较 之前 1.1 版的 test.c 和现在的有什麽不同:
cvs diff -r1.1 test.c
cvs diff -r1.1 -c test.c (完整列出全部 code)
‧新增档案 (以 new.c 为例):
cvs add new.c
cvs commit new.c
‧删除档案 (以 old.c 为例)
rm old.c
cvs remove old.c
cvs commit old.c
‧为目前的版本加入注记 tag (以 v1_2 为例):
cvs tag v1_2
‧重新取出之前的版本:
当您取出过去的专案时,目前的工作版本会暂时变成旧专案,若修改它,您是无法
把它存入 CVS 系统中。因为它是过去的历史,CVS 不容许您修改历史,此时必须在
原先的发展路线上,开辟另外一个分支(branch),所有修正的程式码,全部在这条
分支上去进行。
(1). 依 tag 取出 (以 v1_1 为例):
(a) 另辟一个新目录,切换到该目录下,执行:
cvs checkout -r v1_1
(b) 将目前的 local 档案变为之前的版本:
cvs update -r v1_1
(2). 依时间点取出:
取出 2002-10-19 10:00:00 之前的专案
cvs update -D "2002-10-19 10:00:0 GMT"
回至最新工作版本:
cvs update -A
‧大幅更新注意事项:
请用 #if 0 ... #endif 取代直接删除。
大幅更新可用分支的技巧,如下:
先标记一个版本:
cvs tag v_0_0_1
通知组员後,删除这个版本的 local 档案 (不是删除 CVS 的):
cvs release -d test
生成一个新分支:
cvs rtag -b -r v_0_0_1 v_0_0_1_1 test
再建立此 v_0_0_1_1 版本到 local
cvs checkout -r v_0_0_1_1 test
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.30.73
※ 编辑: yellowfishie 来自: 140.112.25.218 (02/19 20:49)