您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源配置管理工具 > cvs
安裝和使用CVS
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/4 17:03:30 ] 推薦標(biāo)簽:

簡(jiǎn)介
CVS 是 Concurrent Version System(并行版本系統(tǒng))的縮寫,用于版本管理.如果大家曾經(jīng)參與過(guò)多人協(xié)作開(kāi)發(fā)的項(xiàng)目,大家肯定有這樣的痛苦經(jīng)歷:由于多個(gè)人同時(shí)修改同一個(gè)文件,自己辛辛苦苦修改的程序被別人徹底刪除了.另外,如果你的軟件/程序已經(jīng)發(fā)布了三個(gè)版本,而這時(shí)候用戶需要你修改第二個(gè)版本的東西,也許你會(huì)因?yàn)橹槐A袅诵掳姹径纯蘖魈椤_有是你對(duì)程序做了一些修改,但是修改很少,你只想給遠(yuǎn)方的同事發(fā)一個(gè)兩個(gè)版本之間的差別文件,這樣可以免于郵箱不夠大,網(wǎng)速太慢之類的問(wèn)題.為了解決類似這樣的問(wèn)題,以及諸如生成補(bǔ)丁文件,歷史版本修改等,一幫黑客(褒義)在原先 Unix 體系里很成熟的 SCCS 和 RCS 的基礎(chǔ)上,開(kāi)發(fā)了 CVS。(SCCS:Source Code Control System,RCS:Revision Control System)。
CVS 的基本工作思路是這樣的:在一臺(tái)服務(wù)器上建立一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)里可以存放許多不同項(xiàng)目的源程序。由倉(cāng)庫(kù)管理員統(tǒng)一管理這些源程序.這樣,好象只有一個(gè)人在修改文件一樣.避免了沖突.每個(gè)用戶在使用倉(cāng)庫(kù)之前,首先要把倉(cāng)庫(kù)里的項(xiàng)目文件下載到本地。用戶做的任何修改首先都是在本地進(jìn)行,然后用 cvs 命令進(jìn)行提交,由 cvs 倉(cāng)庫(kù)管理員統(tǒng)一 修改.這樣可以做到跟蹤文件變化,沖突控制等等.
由于 CVS 是典型的 C/S 結(jié)構(gòu)的軟件,因此它也分成服務(wù)器端和客戶端兩部分。不過(guò)大多數(shù)CVS 軟件都把它們合二為一了。我們這里分別從服務(wù)器和客戶端的角度討論cvs的使用。


Cvs服務(wù)器安裝


首先確保系統(tǒng)安裝有cvs:
[root@mail xinetd.d]# rpm -qa|grep cvs
cvs-1.11.1p1-3
如果命令輸出類似于上面的輸出則說(shuō)明系統(tǒng)已經(jīng)安裝有cvs,否則需要從安裝光盤中安裝cvs的rpm包。


一 創(chuàng)建CVS屬主用戶:
# useradd -d /cvsroot cvs
# chmod 771 /cv sroot


二、建立CVS倉(cāng)庫(kù)(初始化cvs)


# su cvs
$ cvs -d /cvsroot init
$exit
#


四、啟動(dòng)cvs服務(wù)器


在/etc/xinetd.d/目錄下創(chuàng)建文件cvspserver,內(nèi)容如下:
# default: on
# description: The cvs server sessions;


service cvspserver
{
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvsroot pserver
log_on_failure += USERID
only_from = 192.168.0.0/24
}
其中only_from是用來(lái)限制訪問(wèn)的,可以根據(jù)實(shí)際情況不要或者修改。
修改該文件權(quán)限:
# chmod 644 cvspserver
然后重新啟動(dòng)xinetd:
# /etc/rc.d/init.d/xined restart
然后察看cvs服務(wù)器是否已經(jīng)運(yùn)行:
[root@mail xinetd.d]# netstat -lnp|grep 2401
tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd
則說(shuō)明cvs服務(wù)器已經(jīng)運(yùn)行。


五、創(chuàng)建用來(lái)訪問(wèn)cvs的用戶


前面創(chuàng)建的cvs用戶是cvs倉(cāng)庫(kù)管理用戶,而為了讓用戶訪問(wèn)則還需要一個(gè)訪問(wèn)用戶:
# useradd cvspub
# usemod -G cvs cvspub
這里添加了一個(gè)用戶cvspub,并且將該用戶添加到cvs組中。


六、管理cvs服務(wù)器


管理 cvs 服務(wù)器.服務(wù)器可以用了,現(xiàn)在大家關(guān)心的是如何管理服務(wù)器,比如,我想讓一些人有讀和/或?qū)?CVS 倉(cāng)庫(kù)的權(quán)限,但是不想給它系統(tǒng)權(quán)限怎么辦呢?不難,cvs初始化結(jié)束以后,在管理員用戶(這里是cvs用戶)的主目錄里有一個(gè) CVSROOT 目錄,這個(gè)目錄里有三個(gè)配置文件:passwd, readers, writers。我們可以通過(guò)設(shè)置這三個(gè)文件來(lái)配置 CVS 服務(wù)器,下面分別介紹這幾個(gè)文件的作用:
passwd:cvs 用戶的用戶列表文件,它的格式很象 shadow 文件:
{cvs 用戶名}:[加密的口令]:[等效系統(tǒng)用戶名]
如果你希望一個(gè)用戶只是 cvs 用戶,而不是系統(tǒng)用戶,那么你要設(shè)置這個(gè)文件,剛剛安裝完之后這個(gè)文件可能不存在,你需要以cvs管理員身份(su cvs)用戶手工創(chuàng)建,當(dāng)然要按照上面格式;
第二個(gè)字段是該用戶的加密口令,是用 crypt (3) 加密的,你可以自己寫一個(gè)程序來(lái)做加密,也可以用兩個(gè)偷懶的方法:先創(chuàng)建一個(gè)系統(tǒng)用戶,名字和 cvs 用戶一樣,口令是準(zhǔn)備給它的 cvs 用戶口令,創(chuàng)建完之后從 /etc/shadow 把該用戶第二個(gè)字段拷貝過(guò)來(lái),然后再把這個(gè)用戶刪除.這個(gè)方法對(duì)付數(shù)量少的用戶比較方便,人一多不合適了,而且還有沖突條件(race condition)的安全隱患,還要 root 權(quán)限,實(shí)在不怎么樣,不過(guò)權(quán)益之計(jì)而已;另外一個(gè)方法是利用apche的htpasswd命令創(chuàng)建passwd用戶,添加用戶只需要htpasswd passwd username即可添加用戶到passwd文件中,不過(guò)需要在文件中對(duì)應(yīng)行的后添加一個(gè)":"冒號(hào)和對(duì)應(yīng)的等效系統(tǒng)用戶名;好的是自己編寫一個(gè)程序了來(lái)生成這個(gè)passwd文件了。
第三個(gè)字段是等效系統(tǒng)用戶名,實(shí)際上是賦與一個(gè) cvs 用戶一個(gè)等效的系統(tǒng)用戶的權(quán)限,看下面的例子你明白它的功能了。
readers:有 cvs 讀權(quán)限的用戶列表文件,是一個(gè)一維列表。在這個(gè)文件中的用戶對(duì) cvs
只有讀權(quán)限。
writers:有 cvs 寫權(quán)限的用戶的列表文件,和 readers 一樣,是一個(gè)一維列表。在這個(gè)文件中的用戶對(duì) cvs 有寫權(quán)限。
上面三個(gè)文件在缺省安裝的時(shí)候可能都不存在,需要我們自己創(chuàng)建,好吧,現(xiàn)在還是讓我們用一個(gè)例子來(lái)教學(xué)吧.假設(shè)我們有下面幾個(gè)用戶需要使用 cvs:
cvsuser1, cvsuser2, henry, betty, anonymous
其中 laser 和 gumpwu 是系統(tǒng)用戶,而henry, betty, anonymous 我們都不想給系統(tǒng)用戶權(quán)限,并且 betty 和 anonymous 都是只讀用戶,而且 anonymous 更是連口令都沒(méi)有。
然后編輯 cvs 管理員家目錄里 CVSROOT/passwd 文件,加入下面幾行:

上一頁(yè)123下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd