CVS 是 Concurrent Version System(并行版本系統(tǒng))的縮寫,用于版本管理。在多人團隊開發(fā)中的作用更加明顯。CVS 的基本工作思路是這樣的:在一臺服務器上建立一個倉庫,倉庫里可以存放許多不同項目的源程序。由倉庫管理員統(tǒng)一管理這些源程序。這樣,好象只有一個人在修改文件一樣。避免了沖突。每個用戶在使用倉庫之前,首先要把倉庫里的項目文件下載到本地。用戶做的任何修改首先都是在本地進行,然后用 cvs 命令進行提交,由 cvs 倉庫管理員統(tǒng)一 修改。這樣可以做到跟蹤文件變化,沖突控制等等。
由于CVS是建立在在原先 Unix 體系里很成熟的 SCCS 和 RCS 的基礎上,所以CVS多是Linux(UNIX)系統(tǒng)中所使用,本文中服務器端設置也是以Linux為例。
一、CVS服務器的安裝
首先確認系統(tǒng)中是否安裝CVS服務:
[root@localhost /]# rpm -qa|grep cvs
cvs-1.11.2-cvshome.7x.1
如果命令輸出類似于上面的輸出則說明系統(tǒng)已經安裝有cvs,否則需要從安裝光盤中安裝cvs的rpm包,或者到http://www.cvshome.org下載。
1、建立 CVSROOT
目錄,因為這里涉及到用戶對CVSROOT里的文件讀寫的權限問題,所以比較簡單的方法是建立一個組,然后再建立一個屬于該組的帳戶,而且以后有讀寫權限的用戶都要屬于該組。假設我們建一個組叫cvs,用戶名是cvsroot。建組和用戶的命令如下
#groupadd cvs
#adduser cvsroot
生成的用戶宿主目錄在/home/cvsroot(根據自己的系統(tǒng)調整)
2、用cvsroot 用戶登陸,修改 /home/cvsroot (CVSROOT)的權限,賦與同組人有讀寫的權限:
$chmod 771 . (或者770應該也可以)
注意:這一部分工作是按照文檔說明做的,是否一定需要這樣沒有試驗,我會在做試驗后在以后版本的教程說得仔細一點。如果您有這方面的經驗請?zhí)峁┙o我,謝謝。
3、建立CVS倉庫,(仍然是 cvsroot 用戶),用下面命令:
$cvs -d /home/cvsroot init
4、以root身份登陸,修改 /etc/inetd.conf(使用 xinetd 的系統(tǒng)沒有此文件)和 /etc/services
如果用的是 inetd 的系統(tǒng),在 /etc/inetd.conf 里加入:
cvsserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/cvsroot pserver
說明:上面的行是單獨一整行,/usr/bin/cvs 應該是你的cvs版本的命令路徑,請根據自己的系統(tǒng)調整./home/cvsroot是你建立的CVSROOT的路徑,也請根據上面建立目錄的部分的內容做調整。
如果是使用 xinetd 的系統(tǒng),需要在 /etc/xinetd.d/ 目錄下創(chuàng)建文件 cvspserver(此名字可以自己定義),內容如下:
# default: on
# description: The cvs server sessions;
service cvsserver
{
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是用來限制訪問的,可以根據實際情況不要或者修改。修改該文件權限:
# chmod 644 cvspserver
在/etc/services里加入:
cvsserver 2401/tcp
說明:cvsserver 是任意的名稱,但是不能和已有的服務重名,也要和上面修改 /etc/inetd.conf 那行的第一項一致。
5、添加可以使用 CVS 服務的用戶到 cvs 組:
以 root 身份修改 /etc/group,把需要使用 CVS 的用戶名加到 cvs 組里,比如我想讓用戶 laser 和gumpwu 能夠使用 CVS 服務,那么修改以后的 /etc/group 應該有下面這樣一行:
cvs:x:105:laser,gumpwu
在你的系統(tǒng)上GID可能不是105,沒有關系。主要是要把laser和gumpwu用逗號分隔開寫在后一個冒號后面。當然,象RedHat等分發(fā)版有類似linuxconf這樣的工具的話,用工具做這件事會更簡單些。
6、重起inetd使修改生效:
#killall -HUP inetd
如果使用的是 xinetd 的系統(tǒng):
# /etc/rc.d/init.d/xined restart
然后察看cvs服務器是否已經運行:
[root@localhost /]# netstat -lnp|grep 2401
tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 1041/xinetd
則說明cvs服務器已經運行。
二、管理CVS服務器
服務器可以用了,現在大家關心的是如何管理服務器,比如,我想讓一些人有讀和/或寫 CVS 倉庫的權限,但是不想給它系統(tǒng)權限怎么辦呢?