cvs 是一個(gè)開源的版本控制系統(tǒng)。 我們可以用它來記錄源文件的修改歷史。
例如,修改軟件時(shí)可能會(huì)不知不覺混進(jìn)一些 bug,而且可能過了很久你才會(huì)察覺到它們的存在。有了 cvs,你可以很容易地恢復(fù)舊版本,并從中看出到底是哪個(gè)修改導(dǎo)致了這個(gè) bug。
如果我們把曾經(jīng)創(chuàng)建的每個(gè)文件都保存下來顯然會(huì)浪費(fèi)大量的磁盤空間。cvs的做法是把一個(gè)文件的所有版本保存在一個(gè)文件里,僅僅保存不同版本之間的差異。
對于開發(fā)人員來說,兩人之間很容易很容易互相覆蓋文件。cvs用隔離不同的開發(fā)人員的方式解決了這個(gè)問題,每個(gè)開發(fā)人員在自己的目錄工作,等完成之后由cvs合并。
cvs 初由 Dick Grune 在 1986 年 12 月以 shell 腳本的形式發(fā)布在 comp.sources.unix 的新聞組第 6 卷里。雖然當(dāng)前的 cvs 中沒什么代碼來自于這些 shell 腳本,但許多 cvs 的沖突解決算法是從它們來的。
1989 年 4 月,Brian Berliner 設(shè)計(jì)了 cvs 并編寫了代碼。之后 Jeff Polk 幫助 Brian 設(shè)計(jì)了 cvs 模塊和銷售商分支支持。
我們可以免費(fèi)從網(wǎng)上下載到cvs
網(wǎng)址:http://www.cvshome.org/
1、基本安裝
以下以UNIX平臺(tái)為例。
從http://ccvs.cvshome.org/servlets/ProjectDownloadList下載新的cvs安裝包到本地后:
%gunzip cvs-1.11.2.tar.gz
%tar xvf cvs-1.11.2.tar
%cd cvs-1.11.2
%./configure (可以用./configure --help看看,根據(jù)自己的環(huán)境添加相應(yīng)的參數(shù))
%make
%su - (以正確的用戶來安裝)
%make install
2、CVS Server端的配置
安裝完CVS(假設(shè)cvs安裝在/usr/local/bin)后:
(1)啟動(dòng)CVS服務(wù)
%vi /etc/services
pserver 2402/tcp #cvs pserver port (確認(rèn)這一行存在。)
%vi /etc/inetd.conf
在文件末尾加入:
pserver stream tcp nowait root /usr/local/bin/cvs cvs --allow-root=/your/path/for/cvs/repsitory pserver
注意這是一行。
然后重新啟動(dòng)inetd進(jìn)程(一般要root用戶權(quán)限):
%ps -ef | grep inetd 找出inetd的pid
%su -
%kill -HUP pid
%inetd
(2)建立cvsadm用戶和組(使cvsadm用戶屬于cvsadm組,用于對cvs進(jìn)行管理)
在cvsadm用戶的.cshrc(ksh,sh對應(yīng)的文件為.profile)文件中設(shè)置環(huán)境變量$PATH變量中加入/usr/local/bin,并置$CVSROOT為:
:pserver:cvsadm@192.168.4.33:/your/path/for/cvs/repository
其中192.168.4.33為CVS服務(wù)器的IP地址。
(3)生成CVS環(huán)境
確認(rèn)/your/path/for/cvs/repsitory目錄存在,且cvsadm有可寫權(quán)限。以cvsadm登錄Unix,運(yùn)行%cvs login ,系統(tǒng)會(huì)提示輸入密碼,登錄成功后,執(zhí)行:%cvs init
(注: 此時(shí)可能會(huì)提示.cvspass文件不存在,手工touch .cvspass文件后,重新運(yùn)行cvs login和cvs init 即可)