cvs是一種版本控制系統(tǒng),它不同于一般的版本控制系統(tǒng),它可以實(shí)現(xiàn)版本的并發(fā)管理,即可已有多個用戶同時改動同一個文件而不會互相影響,然后不同的用戶將它們各自修改的文件提交到cvs服務(wù)器上,有cvs來進(jìn)行文件之間的比較,進(jìn)而把這些不同的部分按照某種算法進(jìn)行合并形成一個新的版本。
cvs服務(wù)器一般架設(shè)在unix系統(tǒng)上,雖然也有可以在Windows上運(yùn)行的服務(wù)器版本,但是其性能表現(xiàn)遠(yuǎn)不如在unix上面表現(xiàn)的好, 但是cvs的客戶端在Windows下卻可以工作的很好。我在這里講簡單地介紹一下在Linux下配制cvs服務(wù),以及在Windows下客戶端的設(shè)置情況。
首先我們先說一下如何在Linux上設(shè)置cvs服務(wù),絕大多數(shù)的Linux發(fā)行拌種都包含了cvs,如果你的發(fā)行版本中沒有或者你向是用新的cvs版本,你可以到http://www.cvshome.org去取得新的服務(wù)器版本,這里講述的是以1.10版為基礎(chǔ)的, 它應(yīng)該適合更新的版本.
如果你是從http://www.cvshome.org上的到的.tar.gz形式的源代碼版本,參照源代碼中的相關(guān)的說明文件,安裝指導(dǎo)來編譯程序,然后進(jìn)行安裝,如果你是用Linux發(fā)行版中的cvs包進(jìn)行安裝,執(zhí)行相應(yīng)的包管理工具。比如在Redhat中你可以是用下面的命令來安裝cvs.rpm -ivh cvs-1.10.8-3.i386.rpm
在安裝完成后,我們可以進(jìn)行相應(yīng)的配置。一般cvs是用pserver的認(rèn)證方式作為一種服務(wù)在Linux上運(yùn)行,先要確定系統(tǒng)里/etc/services文件有cvs服務(wù)的入口,一般得有以下兩行:
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations
cvs服務(wù)是通過.netd或者是xinetd來啟動的。對于inetd,修改/etc/inetd.conf,添加以下的句子:
cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/cvsroot pserver
由于在較新的Linux發(fā)行版(如:RedHat7.x)中都是用新xinetd代替了inetd,要用xinetd來啟動cvs服務(wù)
你需要進(jìn)入到/etc/xinetd.d/目錄,然后編輯一個文本文件(名字隨意),這里是用cvspserver作為文件名,這個文件的內(nèi)容如下所示:
service cvspserver
{
socket_type = stream
wait = no
user = root
env = HOME=
server = /usr/bin/cvs
server_args = --allow-root=/cvsroot pserver
}
注意上面的service后面的名稱一定要和你在/etc/service文件中的cvs服務(wù)名稱一樣,在server_args行我們指定了cvs使用pserver認(rèn)證方式,可能容易產(chǎn)生誤解的是env = HOME=這一行,添加這一行的目的是為了解決在執(zhí)行一些cvs操作時產(chǎn)生的讀取/root/.cvsignore文件的錯誤,上面env那行的意思是在運(yùn)行cvs服務(wù)的時候?qū)h(huán)境變量HOME置空,這樣雖然執(zhí)行cvs的用戶是root,但是由于沒有了HOME這個環(huán)境變量,所以cvs不會在去讀取/root/.cvsignore文件了。