cvs是一個版本控制系統(tǒng),用于記錄原文件的版本信息,適合于多人共同開發(fā)同一個項目。目前源代碼是開放的。本文介紹WinCVS使用中的一些體會。
一、基本概念
(1) repository倉庫:用于存放版本控制下的所有目錄和所有各種版本的文件;CVS會完成對repository的查詢和更新。
(2)數(shù)據(jù)如何存放在repository中:隨著CVS版本的不同,存放結(jié)構(gòu)會發(fā)生變化,一般情況下用戶無需了解數(shù)據(jù)到底是如何存放的。
(3)revision :每一個file的各個revision都不相同,形如1.1, 1.2.1,一般1.1是該文件的第一個rivision,后面的一個將自動增加右面的一個整數(shù),比如1.2, 1.3, 1.4...有時候會出現(xiàn)1.3.2.2,原因見后。revision總是偶數(shù)個數(shù)字。一般情況下將revision看作時CVS自己內(nèi)部的一個編號,而tag則可以標志用戶的特定信息。
(4)tag: 用符號化的表示方法標志文件特定revision的信息。通常不需要對某一個孤立的文件作tag,而是對所有文件同時作一個tag,以后用戶可以僅向特定tag的文件提交或者checkout。另外一個作用是在發(fā)布軟件的時候表示哪些文件及其哪個版本是可用的;各文件不同revision可以包括在一個tag中。如果命名一個已存在的tag默認將不會覆蓋原來的;
(5) branch :當用戶修改一個branch時不會對另外的branch產(chǎn)生任何影響?梢栽谶m當?shù)臅r候通過合并的方法將兩個版本合起來;branch總是在當前revision后面加上一個偶數(shù)整數(shù)(從2開始,到0結(jié)束),所以branch總是奇數(shù)個數(shù)字,比如1.2后面branch為1.2.2,該分支下revision可能為1.2.2.1,1.2.2.2,...
(6)conflct:完全是純文本的沖突,不包含邏輯上的矛盾,比如CVS不能解決如下問題:某人修改了函數(shù)f的參數(shù),而另外一個人在另外一個地方用老的參數(shù)調(diào)用該函數(shù)。文本沖突需要用戶自己參與解決,CVS無法自動解決。
(7) checkout:將代碼目錄checkout到指定目錄下,所有文件都是read-write
二、設(shè)置示例和使用問題
(1) 如何提交自己所作的改動
使用commit的向服務(wù)器提交改動的源文件。
commit到服務(wù)器的方法是:
選中文件,右鍵選commit
沖突:多人同時修改同一內(nèi)容。沖突的情況下,通過文件兩個版本的比較消除沖突的地方后再次提交。比較兩個版本不同的方法是:
可以利用CVS自帶的比較工具,CVS會把不同部分通過
<<<<<<<<<<<
...
==========
...
>>>>>>>>>>>
列出來;
也可以利用其它文本比較工具比較(Preference setting中選定,Query-diff setting中選定);
(2) 如何update
選中改動的文件,右鍵選update
(3) 添加文件到模塊中
分為添加文本文件和添加二進制文件兩種,千萬不要搞錯。
以上為個人使用總結(jié),不當之處請指正。