[轉]CVS配置

http://bbscs.laoer.com/read.bbscs?bid=10&id=3862&page=7

 

曾經寫過一篇關於CVS配置的文章,後來時間長了,不用了,自己都忘記了,再配置總是出錯,後來我仔細研究了一下,終於配製好了,現將配置方法總結一下。

以Linux爲例:

一、CVS服務器的安裝

首先確認系統中是否安裝CVS服務:
[root@localhost /]# rpm -qa|grep cvs
cvs-1.11.2-cvshome.7x.1
如果命令輸出類似於上面的輸出則說明系統已經安裝有cvs,否則就需要從安裝光盤中安裝cvs的rpm包,或者到http://www.cvshome.org下載。

1、建立 CVSROOT

目錄,因爲這裏涉及到用戶對CVSROOT裏的文件讀寫的權限問題,所以比較簡單的方法是建立一個組,然後再建立一個屬於該組的帳戶,而且以後有讀寫權限的用戶都要屬於該組。假設我們建一個組叫cvs,用戶名是cvsroot。建組和用戶的命令如下

#groupadd cvs
#useradd -g cvs -G cvs -d /home/cvsroot cvsroot

生成的用戶宿主目錄在/home/cvsroot(根據自己的系統調整)

2、建立CVS倉庫,用cvsroot 用戶登陸,用下面命令:

$cvs -d /home/cvsroot init

3、仍然是 cvsroot 用戶,修改 /home/cvsroot (CVSROOT)的權限,賦與同組人有讀寫的權限: 

$chmod 775 -R /home/cvsroot

4、用root登錄,加入cvs服務(我的redhath7.3缺省就有cvs服務,所以不用加)

vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service

cvs服務由inted來喚起,因此需要改動inetd提供的服務,如果你的redhat使用的是inetd 方式則在文件/etc/inetd.conf中加入如下的內容:cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver

我的redhat7.3使用的是xinetd方式,所以在xinetd.d目錄下添加需要啓動的服務:
cd /etc/xinetd.d
vi cvspserver
文件內容:
service cvspserver
{
  disable = no
  flags = REUSE
  socket_type = stream
  wait = no
  user = cvsroot
  server = /usr/bin/cvs
  server_args = -f --allow-root=/home/cvsroot pserver
  log_on_failure += USERID
}

重新啓動inetd或者xinetd:
 /etc/rc.d/init.d/xinetd restart

檢查cvspserver服務是否已經啓動
[root@localhost /]# netstat -lnp|grep 2401
tcp        0      0 0.0.0.0:2401            0.0.0.0:*               LISTEN      1041/xinetd 
則說明cvs服務器已經運行。

二、管理CVS服務器

服務器可以用了,現在大家最關心的就是如何管理服務器,比如,我想讓一些人有讀和/或寫 CVS 倉庫的權限,但是不想給它系統權限怎麼辦呢?

不難,在 cvs 管理員用戶(在我這裏是 cvsroot 用戶)的家目錄裏有一個 CVSROOT 目錄,這個目錄裏有三個配置文件,passwd, readers, writers,我們可以通過設置這三個文件來配置 CVS 服務器,下面分別介紹這幾個文件的作用:

passwd:cvs 用戶的用戶列表文件,它的格式很象 shadow 文件:

{cvs 用戶名}:[加密的口令]:[等效系統用戶名]

readers:有 cvs 讀權限的用戶列表文件。就是一個一維列表。在這個文件中的用戶對 cvs只有讀權限。

writers:有 cvs 寫權限的用戶的列表文件。和 readers 一樣,是一個一維列表。在這個文件中的用戶對 cvs 有寫權限。

上面三個文件在缺省安裝的時候可能都不存在,需要我們自己創建,好吧,現在還是讓我們用一個例子來教學吧。假設我們有下面幾個用戶需要使用 cvs:

laser, gumpwu, henry, betty, anonymous。

其中 laser 和 gumpwu 是系統用戶,而 henry, betty, anonymous 我們都不想給系統用戶權限,並且 betty 和 anonymous 都是隻讀用戶,而且 anonymous 更是連口令都沒有。

然後編輯 cvs 管理員家目錄裏 CVSROOT/passwd 文件(cvsroot用戶),加入下面幾行:

laser:$xxefajfka;faffa33:cvsroot
gumpwu:$ajfaal;323r0ofeeanv:cvsroot
henry:$fajkdpaieje:cvsroot
betty:fjkal;ffjieinfn/:cvsroot
anonymous::cvsroot

注意:上面的第二個字段(分隔符爲 :)是密文口令。

密碼可以有以下方法生成
vi /home/cvsroot/passwdgen.pl
文件內容:
#!/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";

如果需要密碼爲:some,則敲入:
./passwdgen.pl some
(注意passwdgen.pl要先設爲可執行)
回車即可得到加密密碼,用其替換passwd文件中的passwd部分就可以了


編輯 readers 文件,加入下面幾行:
anonymous
betty

編輯 writers 文件,加入下面幾行:

laser
gumpwu
henry

注意:writers中的用戶不能在readers中,要不然不能上傳更新文件。


對於使用CVS的用戶要修改它的環境變量,例如laser用戶的環境變量,打開/home/laser(laser的宿主目錄)下的.bash_profile文件,加入

CVSROOT=/home/cvsroot
export CVSROOT

用laser登陸就可以建立CVS項目,如果要root使用,可以修改/etc/profile文件。


現在我們各項都設置好了,那麼怎麼用呢,我在這裏寫一個最簡單的(估計也是最常用的)命令介紹:

首先,建立一個新的CVS項目,一般我們都已經有一些項目文件了,這樣我們可以用下面步驟生成一個新的CVS項目:

進入到你的已有項目的目錄,比如叫 cvstest:

$cd  cvstest
運行命令:
$cvs import -m "this is a cvstest project" cvstest     v_0_0_1     start

說明:import 是cvs的命令之一,表示向cvs倉庫輸入項目文件。 -m參數後面的字串是描述文本,隨便寫些有意義的東西,如果不加 -m 參數,那麼cvs會自動運行一個編輯器(一般是vi,但是可以通過修改環境變量EDITOR來改成你喜歡用的編輯器。)讓你輸入信息,cvstest 是項目名稱(實際上是倉庫名,在CVS服務器上會存儲在以這個名字命名的倉庫裏。)
v_0_0_1是這個分支的總標記。沒啥用(或曰不常用。)
start 是每次 import 標識文件的輸入層次的標記,沒啥用。
這樣我們就建立了一個CVS倉庫了。

  建立CVS倉庫的文件夾應該是“乾淨”的文件夾,即只包括源碼文件和描述的文件加,而不應該包括編譯過的文件代碼等!


 

--------------------
很快就配置好了,但是在用ide做簽出的時候,一直提示有問題,後來發現,那個倉庫的名字必須是/home/cvsroot
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章