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