[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > 其它 > 正文
cvs的配置和使用
本文出自:http://xfocus.org/ 作者:san小許 整理(san@xfocus.org) (2001-09-10 08:00:00)

首先要嚴正聲明一下,文章的前一部分很多是拷貝粘貼自linuxforum裡的帖子,如果有侵犯了你的作 
權,去找quack的律師談談:) 

cvs是一種版本控制系統,它不同一般的版本控制系統,它可以實現版本的並發管理,即可已有多個用 
戶同時改動同一個文件而不會互相影響,然不同的用戶將它們各自修改的文件提交到cvs服務器上,有 
cvs來進行文件之間的比較,進而把這些不同的部分按照某種算法進行合並形成一個新的版本。 

cvs服務器一般架設在unix系統上,雖然也有可以在Windows上運行的服務器版本,但是其性能表現遠不如 
在unix上面表現的好, 但是cvs的客戶端在Windows下卻可以工作的很好。我在這裡講簡單地介紹一下在 
Linux下配制cvs服務,以及在Windows下客戶端的設置情況。 

首先我們先說一下如何在Linux上設置cvs服務,絕大多數的Linux發行拌種都包含了cvs,如果你的發行版 
本中沒有或者你向是用最新的cvs版本,你可以到http://www.cvshome.org去取得最新的服務器版本,這 
裡講述的是以1.10版為基礎的, 它應該適合更新的版本. 

如果你是從http://www.cvshome.org上的到的.tar.gz形式的源代碼版本,參照源代碼中的相關的說明文 
件,安裝指導來編譯程序,然進行安裝,如果你是用Linux發行版中的cvs包進行安裝,執行相應的包管 
理工具。比如在Redhat中你可以是用下面的命令來安裝cvs. 
rpm -ivh cvs-1.10.8-3.i386.rpm 

在安裝完成,我們就可以進行相應的配置。一般cvs是用pserver的認証方式作為一種服務在Linux上運 
行,先要確定系統裡/etc/services文件有cvs服務的入口,一般得有以下兩行: 
cvspserver 2401/tcp # cvs client/server operations 
cvspserver 2401/udp # cvs client/server operations 

cvs服務是通過inetd或者是xinetd來啟動的。對inetd,修改/etc/inetd.conf,添加以下的句子: 
cvspserver stream tcp nowait root /usr/bin/cvs    cvs --allow-root=/cvsroot pserver 

由在較新的Linux發行版(如:RedHat7.x)中都是用新xinetd代替了inetd,要用xinetd來啟動cvs服務 
你需要進入到/etc/xinetd.d/目錄,然編輯一個文本文件(名字隨意),這裡是用cvspserver作為文件 
名,這個文件的內容如下所示: 
service cvspserver 

    socket_type = stream 
    wait = no 
    user = root 
    env = HOME= 
    server = /usr/bin/cvs 
    server_args = --allow-root=/cvsroot pserver 

注意上面的service面的名稱一定要和你在/etc/service文件中的cvs服務名稱一樣,在server_args行 
我們指定了cvs使用pserver認証方式,可能容易產生誤解的是env = HOME=這一行,添加這一行的目的就 
是為了解決在執行一些cvs操作時產生的讀取/root/.cvsignore文件的錯誤,上面env那行的意思就是在 
運行cvs服務的時候將環境變量HOME置空,這樣雖然執行cvs的用戶是root,但是由沒有了HOME這個環境 
變量,所以cvs就不會在去讀取/root/.cvsignore文件了。 

到這裡我們就配置完了cvs的啟動所需要的文件,但是要使cvs正常運行還需要對需要使用cvs的用戶進行 
設置,下面是我在配置cvs是使用的方法。首先建立一個用戶組cvs,可以使用groupadd或者addgroup命名 
,也可以直接編輯/etc/group文件添加這個組,然添加一個用戶cvsroot, 然修改/etc/passwd文件 
使cvsroot用戶的缺省組是cvs組,而不是cvsroot組。建立/cvsroot目錄,然修改/cvsroot的屬主及屬 
性: 
#chown cvsroot.cvs /cvsroot 
#chmod 755 /cvsroot 
(原文這裡是771,但是我們要配置cvsweb.cgi,下面再談)。 
對cvs進行初始化:cvs -d /cvsroot init 
這樣cvs服務器就可以使用了,用cvs -d :pserver:cvsroot@host:/cvsroot login登陸,輸入cvsroot用 
戶在服務器上的口令,沒有出現錯誤提示就表示成功了。 

下面講述Windows下客戶端的配置,我只會用wincvs,覺得很不錯,不用記那些繁瑣對命令:)可以從 
http://www.cvshome.org找到相應的下載地址,在linuxforum也有下載,3M多一點。啟動wincvs在Admin 
菜單中選擇preferences然在global頁中設置CVSROOT,就是:pserver:cvsroot@host:/cvsroot。在認 
証方式中選擇passwd file on the cvs server, 在下面的版本號中選擇合適的版本,執行Admin菜單中 
的login,在提示框輸入口令,如果Output窗口出現以下提示: 
*****CVS exited normally with code 0***** 
就表示我們現在可以在Windows下使用cvs服務了。我開始不知道成功了,還滿大街的問wincvs怎了:( 
英文好就看wincvs自帶的幫助文擋,我也推薦兩個文檔:) 
wincvs.pdf winhtml.zip 

特別是這個pdf文檔確實不錯,還是中文的:) 


如果你想在網頁裡給大家顯示你的項目,那cvsweb是一個不錯的選擇。這是一個perl程序,可以到以下 
地址找到最新版: 
http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi 
現在的版本是1.93,記得要用新版,1.8以下有一個小小的漏洞,可以到綠盟查一查。 
由是cgi程序,是以nobody用戶執行的,所以/cvsroot的屬性要設成775。開始我按章照搬,把屬性改成 
771,結果項目的目錄就是不出來,埋葬了半天的青春:(還有記得把/cvsroot/CVSROOT/history的屬性 
改成666。cvsweb.conf裡%CVSROOT數組的Configuration設成/cvsroot,就是cvs倉庫的路徑不要那個長長 
CVSROOT變量。這些其實在它的說明文檔和程序注釋裡都講到了,只是這個世界是懶人的世界:) 


一切都陽春白雪,可以埋頭寫程序了?只是cvs還有一個小小的DoS漏洞要跟大家說一下:( 
每個cvs的操作過程會以操作用戶的身份在/tmp下臨時建一個鎖定了的目錄cvs_servPID,這時如果有人建 
了大量的同類文件就會使cvs的操作出錯,會提示: 
cannot change permissions on temporary directory 
Operation not permitted 
下面是測試的perl程序: 
#!/usr/bin/perl 
#$min和$max的值根據實際情況修改 
$min=400; 
$max=4000; 
for ($x=$min;$x<=$max;$x++) { 
        open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!"; 
        chmod 0600, "/tmp/cvs-serv$x"; 
        close CVSTMP; 


解決方法: 
使用server.c中的mktemp(3)函數或者其它任何可以產生唯一文件名的方法。在/tmp/目錄所在的分區使 
用空間配額也能解決部分問題。  主要還是紮緊籬笆,莫讓別人闖進來,這畢竟是一個local的問題。  
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
使用CVS進行項目開發管理 (2001-11-06 07:00:00)
cvs的配置和使用 (2001-09-10 08:00:00)
用CVS來管理自己的程序 (2001-08-09 15:00:00)
CVS 簡介 (2001-06-05 18:08:00)
CVS RCS HOWTO 原始程式碼版本控制系統 (3) (2001-05-02 10:11:41)
CVS RCS HOWTO 原始程式碼版本控制系統 (2) (2001-05-02 10:10:18)
CVS RCS HOWTO 原始程式碼版本控制系統 (1) (2001-05-02 10:09:53)
PostgreSQL7.0手冊-附錄-日期/時間支持-CVS 倉庫 (2001-04-21 23:48:48)
使用CVS進行版本管理 (2001-04-21 20:24:35)
CVS 速成班 (2001-04-21 17:54:50)
 

★  樊強制作 歡迎分享  ★