作者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)