在linux中,cvs全稱「Concurrent Version System」,中文意思為「程式碼版本控制軟體」,它是一種GNU軟體包,主要用於在多人開發環境下原始碼的維護。CVS可以維護任意檔案的開發和使用,例如共用檔案的編輯修改,而不僅僅侷限於程式設計;CVS維護的檔案型別可以是文字型別也可以是二進位制型別。CVS基於使用者端/伺服器的行為使其可容納多個使用者。
本教學操作環境:linux7.3系統、Dell G3電腦。
linux中的cvs
CVS(Concurrent Versions System,程式碼版本控制軟體),是一種GNU軟體包,主要用於在多人開發環境下原始碼的維護。與它相類似的程式碼版本控制軟體有subversion。多個開發人員通過一箇中心版本控制系統來記錄檔案版本,從而達到保證檔案同步的目的。CVS版本控制系統是一種GNU軟體包,主要用於在多人開發環境下的原始碼的維護。但是由於之前CVS編碼的問題,大多數軟體開發公司都使用SVN替代了CVS。
Concurrent有並行的、共同作業的、一致的等含義。實際上CVS可以維護任意檔案的開發和使用,例如共用檔案的編輯修改,而不僅僅侷限於程式設計。CVS維護的檔案型別可以是文字型別也可以是二進位制型別。
CVS用Copy-Modify-Merge(拷貝、修改、合併)變化表支援對檔案的同時存取和修改。它明確地將原始檔的儲存和使用者的工作空間獨立開來,並使其並行操作。
CVS基於使用者端/伺服器的行為使其可容納多個使用者。這一特性使得CVS成為位於不同地點的人同時處理資料檔案(特別是程式的原始碼)時的首選。
工作思路
在一臺伺服器上建立一個原始碼庫,庫裡可以存放許多不同專案的源程式。由原始碼庫管理員統一管理這些源程式。每個使用者在使用原始碼庫之前,首先要把原始碼庫裡的專案檔案下載到本地,然後使用者可以在本地任意修改,最後用CVS命令進行提交,由CVS原始碼庫統一管理修改。這樣,就好像只有一個人在修改檔案一樣,既避免了衝突,又可以做到跟蹤檔案變化等。
CVS是並行版本系統(Concurrent Versions System)的意思,主流的開放原始碼網路透明的版本控制系統。CVS對於從個人開發者到大型、分佈團隊都是有用的。
它的客戶機/伺服器存取方法使得開發者可以從任何因特網的接入點存取最新的程式碼。它的無限制的版本管理檢出(check out:注1)的模式避免了通常的因為排它檢出模式而引起的人工衝突。它的使用者端工具可以在絕大多數的平臺上使用。
CVS被應用於流行的開放原始碼工程中,像Mozilla,GIMP,XEmacs,KDE和GNOME等。那麼它到底怎麼樣。
你可能會說,它非常棒,但是對於"我"來說它能做什麼。首先,基本的 :一個版本控制系統保持了對一系列檔案所作改變的歷史記錄。對於一個開發者來說,那就意味著在你對一個程式所進行開發的整個期間,能夠跟蹤對其所作的所有改動的痕跡。對你來說,有沒有出現過由於在命令列上按錯鍵而導致一天的工作都白費的情況呢。版本控制系統給了你一個安全的網路。
版本控制系統對任何人都有用,真的。(畢竟,誰不願意使用一個安全的網路呢。)它們經常被軟體開發團隊使用。在團隊中工作的開發者需要能夠調整他們的各自的修改;一個集中式版本控制系統允許那樣做。
程式碼調整
在傳統的版本控制系統中,一個開發者檢出一個檔案,修改它,然後將其登記回去。檢出檔案的開發者擁有對這個檔案修改的排它權。沒有其它的開發者可以檢出這個檔案-- 並且只有檢出那個檔案的開發者可以登記(check in:注2)所做的修改。(當然對於管理員有很多方法可以超越這個限制。)
想一下排它的檢出可能會如何工作:Bob的兄弟檢出 foo.java以便加入註釋,寫好程式碼後他什麼也沒做。然後他去吃午飯了。Bob吃完午飯後,發現他的老闆所指給他的一個bug在 foo.java裡。他試圖簽出 foo.java … 但是版本控制系統不允許他這樣做,因為他的兄弟已經把它簽出了。Bob不得不等著他的兄弟吃完午飯回來(在這個"好"日子用了兩個小時),他才可以修正bug。
在一個大型的開放原始碼工程中,因為開發者可能在任意的時區工作得很晚,給予一個開發者阻止任意地方的其它開發者繼續處理任意檔案的能力很明顯無法運轉。他們最終將因為不能夠在他們想要的時候開展專案而感到厭煩。
CVS通過它的無限制的簽出模式解決了這個問題。簽出一個檔案並不給定開發者對那個檔案的排它權。其它的開發者也可以對其檢出,進行他們自己的修改,並且將其登記回去。
"等一下"你可能會說。"但是後面的登記不是會覆蓋前面的嗎"回答是不會。詳細地回答就是當多個開發者對同一個檔案作了修改CVS會檢測,並且自動合併那些改變。
哇噢。自動的,不用擔心 -- CVS 會很小心,並且將會自動合併那些只要不是對程式碼的同一行所作的改動。如果CVS不能安全的處理這些改動,開發者將不得不手工合併它們。從此去往何處。
有大量在許多平臺上可用的CVS附加工具,它們給CVS增加了功能或使得CVS更容易使用。
使用好處
修改軟體時可能會不知不覺混進一些bug,而且可能過了很久你才會察覺到它們的存在。有了 cvs,你可以很容易地恢復舊版本,並從中看出到底是哪個修改導致了這個bug。有時這是很有用的。
cvs 用一種聰明的辦法把一個檔案的所有版本儲存在一個檔案裡,僅僅儲存不同版本之間的差異。
cvs 最初由 Dick Grune 在 1986 年 12 月以 shell指令碼的形式釋出在 comp.sources.unix 的新聞組第 6 卷裡;1989 年 4 月,Brian Berliner 設計了 cvs 並編寫了程式碼。之後 Jeff Polk 幫助 Brian 設計了 cvs 模組和銷售商分支支援。
cvs 不能指導你如何構造什麼。它只是將你所設計的一種樹結構檔案儲存下來以備恢復之用。
cvs 不能決定如何在一個檢出工作目錄使用磁碟空間。如果你在每一個目錄中都寫下 Makefile 或指令碼,且必須知道其它一切的相對位置,有時不得不檢出整個倉庫。
如果你將你的工作模組化,並且建立了一個共用檔案的 build 系統(通過links,mounts,Makefiles 裡的 VPATH 等),你就可以隨意安排磁碟的使用。
你應該在 cvs 下放一個工具來支援這樣一個構造系統(指令碼、Makefile 等等)。
有些變化發生在 cvs 範圍之外時,要想想什麼檔案需要重建。一個傳統的方法是用 make 來構造,並用一些自動化的工具來產生 make 所用的相關檔案。
相關推薦:《Linux視訊教學》
以上就是linux中的cvs是啥的詳細內容,更多請關注TW511.COM其它相關文章!