軟件庫(kù)的備份與移動(dòng)
備份軟件庫(kù)中的文件和備份其他文件并沒(méi)有不同,但你需要一個(gè)備份工具開(kāi)鎖住CVS.這樣,你必須先注冊(cè)一個(gè)可以讀取軟件庫(kù)的用戶,打開(kāi)CVS軟件庫(kù), 你需要編輯`#cvs.rfl’文件.
當(dāng)你想用一備份的軟庫(kù),恢復(fù)原來(lái)的庫(kù)時(shí),如果原庫(kù)在你備份后作過(guò)改動(dòng).CVS將報(bào)錯(cuò).你必須按以下的步驟來(lái)
? 得到一個(gè)新的工作目錄
? 拷貝上一次提交失敗的文件(,當(dāng)然不能拷貝CVS的目錄文件)
? 在新目錄下工作,使用cvs update 或cvs diff 等命令指出那些作過(guò)改動(dòng),在使用cvs commit 將改動(dòng)保存到軟件庫(kù).
你如果想移動(dòng)一個(gè)軟件庫(kù)到其他地方也很簡(jiǎn)單.簡(jiǎn)單的方法是將向要移動(dòng)的目錄創(chuàng)到一個(gè)新的目錄中去.如果你想重新使用原來(lái)的目錄的話,只能手工修改`CVS/Repository' 和 `CVS/Root',除非你精于此道,否則不建議使用.
4.2 CVS 的遠(yuǎn)程用戶管理
作為一個(gè)CVS 服務(wù)器,應(yīng)該滿足兩點(diǎn).首先保證軟件庫(kù)有足夠大的空間. 其次保證有不小于32M 的內(nèi)存, 服務(wù)器為每一個(gè)連接它的用戶產(chǎn)生兩個(gè)進(jìn)程,在子進(jìn)程上的花銷較小.但如果網(wǎng)絡(luò)帶寬不夠,在父進(jìn)程上的花銷是巨大的.
另外一個(gè)大的花銷是diff 文件,當(dāng)源文件很大時(shí),對(duì)他進(jìn)行驗(yàn)證或檢測(cè)的花銷也很大.
遠(yuǎn)程用戶的登錄認(rèn)證方式
以rsh為例行遠(yuǎn)程登錄
Cvs 服務(wù)器使用rsh 允許用戶連接時(shí)應(yīng)該配置.rshosts ,假設(shè)在遠(yuǎn)程主機(jī)tom.exsample.com 上的用戶tom 需要連接到 funame.simple.com 這個(gè)cvs 服務(wù)器上工作.應(yīng)該編輯服務(wù)器端的bach 目錄的.rshosts ,在其中加入
Tom.exsample.com tom
客戶端可運(yùn)行 rsh –l bach funame.simple.com ‘ echo @PATH
以確定自己可以連接到CVS 服務(wù)器上,并且客戶應(yīng)將顯示的這個(gè)路徑寫(xiě)入 .bashrc 或 cshrc (而不是.logiin 或.profile.)
除此之外,客戶端還可以定義環(huán)境變量CVS_SEVER.來(lái)定義主機(jī)的位置. 在服務(wù)器端,修改/etc/.neted.conf文件,來(lái)告訴服務(wù)器,在獲得特定端口的連接時(shí),運(yùn)行cvssever .這個(gè)端口號(hào)缺省值是:2041.當(dāng)然為了不再每次使用時(shí)都要進(jìn)行設(shè)置,可以在用戶端通過(guò)定義環(huán)境變量 CVS_AUTH_PORT來(lái)使用.
如客戶端的ineted 允許使用原始調(diào)用,只需在/etc/ineted.conf 文件中添加下面的句子即可 2401 stream tcp nowait root/usr/local/bin/cvs cvs –f –allow –root=/cvsroot pserver
另外還可以用- T 選項(xiàng)來(lái)定義緩沖目錄.
—allow – root 定義了可供用戶使用的軟件庫(kù),如果服務(wù)器上有更多的軟件庫(kù)需要重新使用這個(gè)句子. 另外,內(nèi)部用戶可以這樣定義環(huán)境變量CVSROOT
:pseve:usr@funam.simple.com:/cvsroot
其中 usr是用戶名(linux系統(tǒng)的)funam.simple.com 是cvs 服務(wù)器,并假設(shè) /cvsroot是軟件庫(kù)的目錄名.遠(yuǎn)程用戶可用下面的形式:
:etx:psever:usr@funam.silple.com:/cvsroot
:etx: 定義了是遠(yuǎn)程用戶,其余同上.
如果客戶的ineted 采用一般調(diào)用,只需在 /etc/seveice 中加入下面這一句:
cvspsever 2401/tcp
重新啟動(dòng)ineted 使其讀取初始化文件即可.
CVS 對(duì)于用戶的管理.在缺省狀態(tài)下(如用telnet登陸),是和linux 系統(tǒng)使用同樣的用戶名與密碼.即:只要你登陸linux 系統(tǒng),擁有 $CVSROOT的只讀權(quán)限..當(dāng)然,對(duì)某一軟件的開(kāi)發(fā)者來(lái)說(shuō)必須擁有相對(duì)應(yīng)目錄的讀寫(xiě)權(quán)限,才能完成源代碼的升級(jí)等工作.因此,CVS 也提供了自己的用戶認(rèn)證體系以更加方便的管理用戶.
在服務(wù)器端的$CVSROOT/CVSROOT 下可以有一個(gè)passwd 文件(可以用環(huán)境變量CVS_PASSFILE 來(lái)定義.)來(lái)記錄cvs的用戶信息.他采用的是和linux etc/passwd 同樣的組織形式 .同樣,它的passwold 也是經(jīng)過(guò)linux標(biāo)準(zhǔn)加密方式的.下面是一個(gè) passwd 的內(nèi)容
anyone:
tom:xyzkue
mary:yuio:pubcvs
第一行的意思是,當(dāng)用anyone 的身份登錄時(shí),不需要任何密碼.即使打入空串也可以.當(dāng)然在這種方式下你得到的可能只是只讀權(quán).第二行的意思是, tom 登錄時(shí)需要敲入passwold.該passworld 加密后是xyzkue.以這種方式登錄后.一般可以獲得較高的權(quán)限.
第三行的意思是,當(dāng)mary 登錄時(shí)需要敲入密碼.進(jìn)入和系統(tǒng)用戶相同的軟件庫(kù).這樣作的目的是因?yàn)?cvs 將紀(jì)錄它的用戶在軟件庫(kù)中的所有的動(dòng)作.定義和系統(tǒng)使用者不同的身份.使用cvs.
例如;使用用戶tom可以用以下的方式登錄:
$cvs –d :etx:tom@funam.simple.com:/cvsroot login
(如果tom 這個(gè)用戶名在遠(yuǎn)端可內(nèi)部是相同的,則tom@ 還可以省略)
同時(shí),可以使用cvs loginout 將所有的環(huán)境變量撤銷.
使用GASSAPI 接入
CVS 還支持使用 GASSAPI 的TCP 直接接入.在使用安轉(zhuǎn)之前,需要將CVS 重新編譯以獲得 GASSAPI 的支持.運(yùn)用 –with –gassapi 來(lái)連接,或者用-a 選向來(lái)連接.使用GASSAPI 的認(rèn)證等方式余地一種方式相同.
但在登錄時(shí).需要重新定義$CVSROOT 如:
$cvs –d :gsever:usr@cvssever.com:/cvsroot login
使用kerberos 直接連接
簡(jiǎn)單的使用rsh 的方法如上說(shuō)述.這種方法的主要特點(diǎn)是所有數(shù)據(jù)都通過(guò)一個(gè)額外的程序.非常費(fèi)時(shí).如果安裝了kerberos.可以直接用TCP 連接.
同樣CVS 需要重新編譯以獲得keberos的支持可用--with-krb4 來(lái)連接.這樣傳輸?shù)臄?shù)據(jù)是沒(méi)有加密的.如果要獲得安全.必須在服務(wù)端和客戶端都用`--enable-encryption來(lái)連接.此時(shí),你應(yīng)用通用的變量-x來(lái)要求加密.
在服務(wù)端需要編輯inetd.conf 來(lái)運(yùn)行cvs kserver .客戶端的缺省端口號(hào)是1999,如果想用其他端口號(hào).需在用戶端定義CVS_CLIENT_PORT
此時(shí)的登錄命令應(yīng)是
cvs -d :kserver:faun.example.org:/usr/local/cvsroot checkout foo
用fork連接
用這方式,可以通過(guò)遠(yuǎn)程協(xié)議連接本地硬盤的軟件庫(kù).換句話說(shuō),他能和:local:有相同的功能用這種方式的登錄命令是
cvs -d :fork:/usr/local/cvsroot login
和用:etx:一樣.缺省的主機(jī)名是cvs