直播中
當(dāng)然,CVS最重要的特性是能讓你了解開(kāi)發(fā)過(guò)程中誰(shuí),何時(shí)對(duì)那些源文件進(jìn)行了什么修
改
一下是一個(gè)CVS系統(tǒng)簡(jiǎn)介
作者: 高嘉良 (Chia-liang Kao) <clkao@cirx.org>
* 什麼是 cvs?
cvs 是一個(gè)版本控制系統(tǒng). 什麼是版本控制系統(tǒng)呢? 簡(jiǎn)單的說(shuō), 他可以記錄程式碼修改
的過(guò)程, 有一個(gè)完整的 history.
闢如說(shuō), 當(dāng)你在修改程式碼的時(shí)候, 不小心寫(xiě)出了一個(gè) bug, 但是你可能很久以後才發(fā)
現(xiàn)多出了這個(gè) bug, 這個(gè)時(shí)候, cvs 就能很
有效的幫助你, 找出到底是在哪一次的修改中, 出現(xiàn)了這個(gè) bug.或許你會(huì)說(shuō), 那我每
次都把程式碼存起來(lái), tar 起來(lái)不就好了,
當(dāng)然, 你是可以這麼做, 但是這太浪費(fèi)空間了! cvs 在版本更改間, 只儲(chǔ)存他們的
diff 檔, 這樣可以很有效的省下很多空間.
再另一個(gè)場(chǎng)合裡頭, 更能顯示出 cvs 的好處 -- 多人一起發(fā)展軟體的時(shí)候. cvs 支援
remote access, user 並可以對(duì)他要修改的
檔案加上 edit 的 flag, 讓別人知道他要修改這個(gè)檔案了. 然而, 一個(gè)較大的發(fā)展團(tuán)
隊(duì), 一定還會(huì)需要一個(gè) mailing list, 用來(lái)溝通.因?yàn)? cvs 只是一個(gè)管理 project
程式碼的工具, 他並不扮演溝通的角色.
* 名詞
repository: 意思是倉(cāng)庫(kù). 在 cvs 裡頭, 就是你真正存放版本歷史的地方. CVS把一份
由多個(gè)文件組成的軟件按包存儲(chǔ),并記錄每個(gè)文件的修改信息。
pserver : 這是 cvs 用來(lái)接受 remote 的 cvs command 用的用戶認(rèn)證服務(wù)。cvs 有兩
種模式, 一種是 local, 一種是 remote.
cvsroot : 當(dāng)你使用 cvs 的時(shí)候, 必須設(shè)定 CVSROOT 這個(gè)環(huán)境變數(shù), 或是用 -d 這個(gè)
選項(xiàng)來(lái)指定.
……………………
安裝過(guò)程如下:
http://www.cyclic.com
DOWN源文件
$ ./configure
$ make
(run the regression tests if desired)
$ make install
(create a repository if you don't already have one)
設(shè)置CVSROOT環(huán)境變量:
bash:
CVSROOT=/src/master; export CVSROOT
csh:
setenv CVSROOT /src/master
/src/master為CVS存放軟件包的根目錄。
——————————————————————————————————--
啟動(dòng)遠(yuǎn)程訪問(wèn)認(rèn)證的PSERVER服務(wù)。
su root
檢查 /etc/services 有沒(méi)有這兩行, 沒(méi)有請(qǐng)加入:
cvspserver 2401/tcp #CVS network server
cvspserver 2401/udp #CVS network server
再 /etc/inetd.conf 加入:
cvspserver stream tcp nowait root \
/usr/bin/cvs cvs -b /usr/bin --allow-root /src/master pserver
mkdir /src/master
——————————————————————————————
給遠(yuǎn)程用戶添加帳號(hào)
adduser anoncvs, 這是要給 anonymous cvs 用的. group 為 nogroup.
新加一個(gè)dev的group.
adduser 參與 dev 的帳號(hào), 當(dāng)然, 把他們的 group 設(shè)為 dev
CVS的用戶帳號(hào)和UNIX及NT的用戶帳號(hào)無(wú)關(guān),CVS用戶帳號(hào)都保存在$CVSROOT中的passwd
readers writers目錄下
格式:
userid:encryptedpasswd:map Unix userid
一下是一個(gè)生成加密PASSWD的perl腳本:
/////////
#!/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";
//////////////
將這個(gè)小程序設(shè)置為可執(zhí)行:cryptout.pl:
ls -l ./cryptout.pl
-rwxr-xr-x 1 root root 265 Jun 14 20:41 /usr/local/bin/cryptout.pl
floss$ cryptout.pl "PASSWORD1"
sB3A79YDX5L4s
就生成了加密的密碼"PASSWORD1"字符串
按照
userid:encryptedpasswd:map Unix userid格式加到PASSWD文件里。readers writers
都是userid的列表。
passwd文件樣例:
anoncvs:sB3A79YDX5L4s:anoncvs
acvsreader:sB3A79YDX5L4s:che
cheche:sB3A79YDX5L4s:che
acvswriter:sB3A79YDX5L4s:che
readers文件樣例:
acvsreader
anoncvs
writers文件樣例:
cheche
acvswriter
CVS SERVER的安裝應(yīng)該是沒(méi)有什么問(wèn)題了, 我下一步主要是研究WINCVS的使用和如何實(shí)
現(xiàn)CVS的WEB訪問(wèn)。實(shí)現(xiàn)客戶端非常方便的訪問(wèn)。
www.wincvs.org
che@OFFICE,chedong@netease.com
icq: 31928674