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