CVS是并發(fā)版本系統(tǒng)(Concurrent Versions System)的意思,主流的開 放源碼網(wǎng)絡(luò)透明的版本控制系統(tǒng)。
CVS對(duì)于從個(gè)人開發(fā)者到大型,分布團(tuán)隊(duì)都是有用的:
它的客戶機(jī)/服務(wù)器存取方法使得開發(fā)者可以從任何因特網(wǎng)的接入點(diǎn)存取新的代碼。
它的無限制的版本管理檢出(check out:注1)的模式避免了通常的因?yàn)榕潘?檢出模式而引起的人工沖突。
它的客戶端工具可以在絕大多數(shù)的平臺(tái)上使用。
CVS被應(yīng)用于流行的開放源碼工程中,象Mozilla,GIMP,XEmacs,KDE,和GNOME等。
那么它到底怎么樣?
你可能會(huì)說,它非常棒,但是對(duì)于"我"來說它能做什么?首先,基本的:
一個(gè)版本控制系統(tǒng)保持了對(duì)一系列文件所作改變的歷史記錄。
對(duì)于一個(gè)開發(fā)者來說,那意味著在你對(duì)一個(gè)程序所進(jìn)行開發(fā)的整個(gè)期間,能夠跟蹤對(duì)其所作的所有改動(dòng)的痕跡。對(duì)你來說,有沒有出現(xiàn)過由于在命令行上 按錯(cuò)鍵而導(dǎo)致的工作都白費(fèi)的情況呢?版本控制系統(tǒng)給了你一個(gè)安全的網(wǎng)絡(luò)。
版本控制系統(tǒng)對(duì)任何人都有用,真的。(畢竟,誰不愿意使用一個(gè)安全的 網(wǎng)絡(luò)呢?)但是它們經(jīng)常被軟件開發(fā)團(tuán)隊(duì)使用。在團(tuán)隊(duì)中工作的開發(fā)者需要能夠調(diào)整他們的各自的修改;一個(gè)集 中式版本控制系統(tǒng)允許那樣做。
代碼集中的配置
個(gè)人開發(fā)者希望一個(gè)版本控制系統(tǒng)的安全網(wǎng)絡(luò)能夠運(yùn)行在他們的本地的 一臺(tái)機(jī)器上。然而,開發(fā)團(tuán)隊(duì)需要一個(gè)集中的服務(wù)器,所有的成員可以將服務(wù)器作為倉庫來訪問他們的代碼。在 一個(gè)辦公室中,沒有問題 -- 只是將倉庫連到本地網(wǎng)絡(luò)上的一臺(tái)服務(wù)器上行了。對(duì)于開放源碼項(xiàng)目...噢, 還是沒有問題,這要感謝因特網(wǎng)。CVS內(nèi)建了客戶機(jī)/服務(wù)器存取方法,所以任何一個(gè)可以連到因特網(wǎng)上的開發(fā) 者都可以存取在一臺(tái)CVS服務(wù)器上的文件。
調(diào)整代碼
在傳統(tǒng)的版本控制系統(tǒng)中,一個(gè)開發(fā)者檢出一個(gè)文件,修改它,然后將其登記回去。檢出文件的開發(fā)者擁有對(duì)這個(gè)文件修改的排它權(quán)。沒有其它的開發(fā)者可以檢出這個(gè)文件 -- 并且只 有檢出那個(gè)文件的開發(fā)者可以登記(check in:注2)所做的修改。(當(dāng)然對(duì)于管理員有很多方法可以超越這個(gè)限制。)
想一下排它的檢出可能會(huì)如何工作:Bob的兄弟檢出foo.java以便加入注釋,寫好代碼后他什么也沒做。然后他去吃午飯了。Bob吃完午飯后,發(fā)現(xiàn)他的老板所指給他的一個(gè)bug在 foo.java里。他試圖檢出 foo.java... 但是版本控制系統(tǒng)不允許他這樣做,因?yàn)樗男值芤呀?jīng)把它檢出了。Bob不 得不等著他的兄弟吃完午飯回來(在這個(gè)"好"日子用了兩個(gè)小時(shí)),他才可以修正bug。
在一個(gè)大型的開放源碼工程中,因?yàn)殚_發(fā)者可能在任意的時(shí)區(qū)工作得很 晚,給予一個(gè)開發(fā)者阻止任意地方的其它開發(fā)者繼續(xù)處理任意文件的能力很明顯示無法運(yùn)轉(zhuǎn)。他們終將因?yàn)椴荒軌蛟谒麄兿胍臅r(shí)候開展項(xiàng)目而感到厭煩。
CVS通過它的無限制的檢出模式解決了這個(gè)問題。檢出一個(gè)文件并不給定 開發(fā)者對(duì)那個(gè)文件的排它權(quán)。其它的開發(fā)者也可以對(duì)其檢出,進(jìn)行他們自已的修改,并且將其登記回去。
"等一下!"你可能會(huì)說。"但是后面的登記不是會(huì)覆蓋前面的嗎?"回答 是不會(huì)。詳細(xì)地回答是當(dāng)多個(gè)開發(fā)者對(duì)同一個(gè)文件作了修改CVS會(huì)檢測(cè),并且自動(dòng)合并那些改變。
哇噢。自動(dòng)的?不用擔(dān)心 -- CVS 會(huì)很小心,并且將會(huì)自動(dòng)合并那些只 要不是對(duì)代碼的同一行所作的改動(dòng)。如果CVS不能安全的處理這些改動(dòng),開發(fā)者將不得不手工合并它們。
從此去往何處?
到現(xiàn)在為止,你已經(jīng)毫不猶豫地著迷于CVS 的潛力,并且急不可待地想 開始。第一步是去得到適合你的平臺(tái)的CVS軟件。安裝CVS通常是將其從你下載的壓縮包中解開這么一件 事。配置CVS 可能要小心一些,它非常依賴于你使用的平臺(tái)和你的CVS代碼倉庫的存放地。