在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是啥的詳細內容。更多資訊請關注PHP中文網其他相關文章!