CVS中的一些概念及其實際使用

 
CVS
倉庫:對CVS來說先要建立一個倉庫,所以項目都會被服務器保存在倉庫中,並且CVS服務器會在倉庫下建立一個CVSROOT目錄。
注意--保存到倉庫中的文件一般不要包含原代碼編譯後的二進制文件。
工作區:把項目文件從倉庫中籤出到本地保存的地方。
簽出
提交
更新
模塊:一般的版本控制器都允許組織倉庫中的文件,在最上面一層文件是按照項目進行劃分,對於每個項目又可將文件按照模塊(以及子模塊)劃分。一個模塊是一組可以按照名稱進行簽出的文件。模塊甚至可以讓你在不同的項目間共享代碼。
版本:在CVS中會針對每個文件指定不同的修訂版本號序列,但我們不能用單個文件的版本號來跟蹤其它的一些特徵,如項目的版本。即CVS指派給文件的單個修訂版本號不應該用做(項目的)外部版本號。版本控制器提供標記(tags)來作爲外部版本號。
標記:由於我們在修改單個文件後版本控制器會給一個版本號,如1.46,但這是針對一個文件不是對一組或是某個模塊或項目,所以版本控制系統可以讓你爲特定時間點的一組文件(或模塊,項目)指派標記名,如“Release1”,那以後就可以使用通用的標記來簽出這些文件,而與單個文件的版本無關。
分支:對開始的一個項目要發展成兩個方向,如一個是繼續開發,一個是準備發佈的版本,這樣人員可以在這兩個分支上進行簽入簽出操作,而不相互影響(那爲什麼我們不直接分成兩個項目了,是應爲這兩個分支也可以相互影響,我們可以將一個分支上修正的bug合併到另一個分支上,當然也可以到主幹上,可以說主幹也是一個分支)。分支用標記來區分,並且分支中的文件修訂號用額外的數字表示。
合併:分支間的影響。
關於版本控制中的鎖選項:
嚴格鎖:文件簽出後只能有一個用戶有修改權限。
樂觀鎖:這是解決衝突的第二種策略,CVS默認的就是這種,實際上採用這種方式文件就相當於沒有鎖定似的。雙方使用者都能修改簽出的文件,如果一人修改完後簽入了,另一個也要簽入時,那麼倉庫會要求你先更新這個文件,注意這裏巧妙的地方是版本控制器會試圖將你的修改和倉庫中的修改合併在一起,如果你們兩人修改的不是同一個地方,則更新後你的修改也會保留住,這是你就可以簽入了;如果不巧的是你們兩人都修改的是同一個地方,這是會產生衝突,CVS會列舉出你們的修改的地方,讓你手動解決這個衝突。
 
一些常用操作:
裝好cvsnt後,通過cvsnt control將服務器上的一個文件夾建成倉庫,cvs系統會自動在該文件夾下建CVSROOT目錄,它下面有些很有用的文件,如有關用戶及權限的設定的文件。
裝好服務器端後,再裝客戶端,如wincvs,也可以用IDE的客戶端,建立一個新項目,commit。
下面談一下關於刪除的操作,當我們已在服務器端的倉庫中有個項目(模塊),要刪除它下的文件時,我們可現在自己的工作區中先刪除這個文件,然後commit,這是服務器端就邏輯上刪除了這個文件,我們在其它的客戶端上check out時,就不會有這個文件了,當然我們可以在項目中恢復這個文件,實際上在服務器端的倉庫中並沒有物理刪除它。如果要物理刪除倉庫中的某個文件,就要到服務器上去手動直接刪了,但一定要記住,要物理刪除的文件一定要先邏輯刪除,不然以後客戶端操作會出錯的。如果要刪除倉庫中的目錄,方法也是一樣的,又可能要先刪除目錄下的所有文件先。
當我們用wincvs刪除某個在服務器中的項目時,首先要刪除該項目下的所有文件和目錄,然後commit,這是在check out這個項目,注意在check out時選擇自動刪除空目錄,這時這個項目在wincvs中就沒了,其它的客戶端也籤不出了,然後我們可以在服務器端物理刪除這個項目了。
 
 
發佈了34 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章