CVS 是 Concurrent Version System(并行版本系統)的縮寫,用于版本管理。如果大家曾經參與過多人協作開發(fā)的項目,大家肯定有這樣的痛苦經歷:由于多個人同時修改同一個文件,自己辛辛苦苦修改的程序被別人徹底刪除了。另外,如果你的軟件/程序已經發(fā)布了三個版本,而這時候用戶需要你修改第二個版本的東西,也許你會因為只保留了新版本而痛哭流涕。還有是你對程序做了一些修改,但是修改很少,你只想給遠方的同事發(fā)一個兩個版本之間的差別文件,這樣可以免于郵箱不夠大,網速太慢之類的問題。為了解決類似這樣的問題,以及諸如生成補丁文件,歷史版本修改等,一幫黑客(褒義)在原先 Unix 體系里很成熟的 SCCS 和 RCS 的基礎上,開發(fā)了 CVS.(SCCS:Source Code Control System,RCS:Revision Control System)
CVS 的基本工作思路是這樣的:在一臺服務器上建立一個倉庫,倉庫里可以存放許多不同項目的源程序。由倉庫管理員統一管理這些源程序。這樣,好象只有一個人在修改文件一樣。避免了沖突。每個用戶在使用倉庫之前,首先要把倉庫里的項目文件下載到本地。用戶做的任何修改首先都是在本地進行,然后用 cvs 命令進行提交,由 cvs 倉庫管理員統一修改。這樣可以做到跟蹤文件變化,沖突控制等等。
由于 CVS 是典型的 C/S 結構的軟件,因此它也分成服務器端和客戶端兩部分。不過大多數 CVS 軟件都把它們合二為一了。
結合文檔和一些網上資源,我寫一點非常簡單的“速成”的教材.希望對大家有用.
下面是我的步驟和做法:
前提要求:
root 權限;
CVS軟件,請找到相關的rpm,tgz,deb 等包裝上,或者到
http://www.cvshome.org/CVS/Dev/code
下載原程序編譯安裝,這里我不準備介紹它的安裝,請參考CVS自身的文檔安裝.我使用Slackware的tgz包,安裝的命令是
#installpkg cvs*.tgz
其他包請參考對應包管理工具的命令.
一定的系統資源,要有一定內存(32M能工作得很好),要一定的磁盤空間,看你的項目的大小和多少而定.
架設CVS服務器:
建立 CVSROOT 目錄,因為這里涉及到用戶對CVSROOT里的文件讀寫的權限問題,所以比較簡單的方法是建立一個組,然后再建立一個屬于該組的帳戶,而且以后有讀寫權限的用戶都要屬于該組.假設我們建一個組叫cvs,用戶名是cvsroot.建組和用戶的命令如下
#groupadd cvs
#adduser cvsroot
生成的用戶家目錄在/home/cvsroot(根據自己的系統調整)
用 cvsroot 用戶登陸,修改 /home/cvsroot (CVSROOT)的權限,賦與同組人有讀寫的權限:
$chmod 771 . (或者770應該也可以)
注意:這一部分工作是按照文檔說明做的,是否一定需要這樣沒有試驗,我會在做試驗后在以后版本的教程說得仔細一點.如果您有這方面的經驗請?zhí)峁┙o我,謝謝.
建立CVS倉庫,(仍然是 cvsroot 用戶),用下面命令:
$cvs -d /home/cvsroot init
以root身份登陸,修改 /etc/inetd.conf(使用 xinetd 的系統沒有此文件)和 /etc/services,
如果用的是 inetd 的系統,在 /etc/inetd.conf 里加入:
cvsserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/cvsroot pserver
說明:上面的行是單獨一整行,/usr/bin/cvs 應該是你的cvs版本的命令路徑,請根據自己的系統調整./home/cvsroot 是你建立的CVSROOT的路徑,也請根據上面建立目錄的部分的內容做調整.
如果是使用 xinetd 的系統,需要在 /etc/xinetd.d/ 目錄下創(chuàng)建文件 cvspserver(此名字可以自己定義),內容如下: