您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
windows環(huán)境CVS client使用入門
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/13 16:04:41 ] 推薦標(biāo)簽:

CVS (Cuncurrent Versions System)是基于TCP/IP協(xié)議的版本控制工具,也是Open source界重要的開發(fā)工具之一。
它原來主要工作在UNIX平臺下,現(xiàn)在在windows平臺上也出現(xiàn)了很多GUI工具。
關(guān)于其由來,發(fā)展,請參閱http://www.redsaga.com/CVS_newbie_win32/www.cvshome.org。
CVS和其他大部分版本控制軟件一樣,是Client/Server結(jié)構(gòu)的。你必須在本地為CVS repository準(zhǔn)備好一個(gè)目錄,來和服務(wù)器同步源代碼。
和在Windows 開發(fā)平臺中擁有很大用戶群的Visual Source Safe(VSS)相比,CVS主要由兩個(gè)不同之處。
一是VSS依靠服務(wù)器上的一個(gè)共享目錄提供服務(wù),每一個(gè)client必須能夠訪問這個(gè)共享目錄。這也決定了source safe在TCP/IP環(huán)境下使用很困難。對于分布跨越數(shù)個(gè)城市甚至的工作小組來說,只有通過VPN才能夠安全的訪問source safe數(shù)據(jù)庫。(SourceGear公司(www.sourcegear.com)發(fā)售名為SourceOffSite的商業(yè)軟件包,US$239 per user,也可以為遠(yuǎn)程用戶提供通過TCP/IP訪問source safe數(shù)據(jù)的能力。) 而CVS依靠TCP/IP連接提供服務(wù),所以它天生是為了在internet上協(xié)同工作而設(shè)計(jì)的。雖然基本的pserver連接安全性不是很高,但是通過使用SSH,可以獲得很高的安全性。

二是CVS反對對文件上鎖的機(jī)制。VSS以及其他很多傳統(tǒng)版本控制工具要求一個(gè)文件只能有一個(gè)使用者,它必須先checkout聲明編輯文件的獨(dú)享權(quán)力,直到checkin為止。但是對于地理上不限制使用者位置的CVS來說,等待一個(gè)用戶checkin是一件痛苦的事情,而互相溝通比一個(gè)緊密工作的團(tuán)體更困難。CVS采取多個(gè)用戶可以同時(shí)對一個(gè)文件進(jìn)行編輯,然后commit的方式解決這個(gè)問題。假設(shè)由于溝通不足出現(xiàn)沖突,使用者必須手工解決沖突之后再進(jìn)行commit。在這種情況下,沖突的開發(fā)者必須努力進(jìn)行足夠的溝通以避免再次沖突。
CVS服務(wù)器可以被配置為把commit記錄自動張貼到新聞組或者開發(fā)者的email信箱中去。注意這些輔助記錄將有助于開發(fā)者之間的合作。
2, repository,module
CVS服務(wù)器上,一個(gè)源代碼倉庫被稱為一個(gè)repository,一個(gè)server上通?梢赃\(yùn)行多個(gè)repository,每個(gè)repository都是完全獨(dú)立的,可以有不同的用戶列表和訪問規(guī)則。在一個(gè)repository之下,文件按照module組織,每一個(gè)module相當(dāng)于一個(gè)工程,大致上相當(dāng)于Source safe里面的project。
VSS在你連接上服務(wù)器之后,會列出所有的project。但并不是所有的CVS server都會提供module的列表。事實(shí)上,哪些module被公開是由管理員控制的。如果你知道一個(gè)被隱藏的module的名字,你仍然可以正常的訪問這個(gè)module。
3,CVSROOT
CVS依靠運(yùn)行在服務(wù)器上的一個(gè)服務(wù)程序提供TCP/IP的連接。為了訪問一個(gè)CVS數(shù)據(jù)庫,你必須知道你所使用的協(xié)議,服務(wù)器的地址,服務(wù)器提供的Repository的名稱以及你的用戶名和密碼。
有數(shù)種協(xié)議可供選擇。Unix/Linux機(jī)器上的CVS通常使用pserver協(xié)議,這是一種不非常安全的協(xié)議,但是如果你有額外的安全要求,可以通過SSH進(jìn)行增強(qiáng)。除此之外,NT機(jī)器還支持ntserver協(xié)議,它通過主機(jī)的NT用戶表進(jìn)行訪問控制(但是這是在internet上不可用的方法)。kserver和gserver協(xié)議用的比較少,他們依據(jù)Kerboses提供額外的安全保護(hù)。
你有必要知道CVSROOT這個(gè)參數(shù)。CVSROOT是一個(gè)用":"開始及分隔各個(gè)部分的字符串,它包含了協(xié)議、用戶名、服務(wù)器地址和repository名稱。對于用戶來說,CVSROOT像URL一樣,是訪問一個(gè)server的途徑。
一個(gè)典型的CVSROOT=:perser:cao@61.155.107.187:/cvs。這里,pserver是協(xié)議名稱,cao是用戶id,61.155.107.187是主機(jī)ip,/cvs是repository的名字。NT主機(jī)的repository一般會采取d:/CVSROOT之類的格式。
另一個(gè)例子是:pserver:anonymous@jivesoftware.com:/cvs,這是jivesoftware公司提供的開放源代碼java技術(shù)論壇的CVSROOT。
在windows下使用命令行方式,這個(gè)參數(shù)可以通過一個(gè)環(huán)境變量使用。在windows 2000/XP系統(tǒng)中,你可以通過在'My computer'的properties中選擇advanced,然后選擇'Enviroment Variables'來輸入這個(gè)環(huán)境變量。
4,checkout,update
為了得到module下面的源代碼,你只需要使用checkout指令。和Visual source safe不一樣,checkout只是取得文件,而非鎖文件。
如果你已經(jīng)有了本地文件,為了和server保持同步,你需要進(jìn)行update操作。update會自動把server上的新內(nèi)容取到本機(jī)來,如果你本地文件進(jìn)行過了改動,它會幫您做合并工作。
checkout 和 update既可以針對一個(gè)特定的文件,也可以針對一個(gè)目錄或者整個(gè)module。
5, commit
如果你對本地代碼做了任何修改,或者增加一個(gè)文件,刪除一個(gè)文件,每當(dāng)你需要把你的改變提交到server上的時(shí)候,你需要做commit動作。假設(shè)兩個(gè)人都在本地修改了同一個(gè)文件,那么他們像在進(jìn)行一個(gè)競賽,如果你快,那么你贏了。后commit的人將被server拒絕,不得不合并你的修改再次提交。
commit既可以針對一個(gè)特定的文件,也可以針對一個(gè)目錄或者整個(gè)module。
6, revision
Revision是指每一個(gè)文件的版本信息。當(dāng)你第一次增加一個(gè)文件到repository的時(shí)候,它會有一個(gè)初始revision是1.1,以后每次提交,會增加到1.2,1.3...
在一個(gè)branch中的文件,有相對于這個(gè)branch的版本號。如果你對文件作了tag,那么你會看到revision變成1.1.1.1的形式。具體的含義我們在branch和tag的時(shí)候描述。
7,branch
Branch是一棵正常生長的代碼樹中的枝杈。開始的時(shí)候,任何一個(gè)module都有一個(gè)主枝被稱為'HEAD'。
一個(gè)branch終要么被合并到主干中去,要么被結(jié)束。branch通常用來debug,如果這個(gè)bug被fix了,修改bug的代碼應(yīng)該被合并到主枝上去。一個(gè)branch也可能經(jīng)歷多次與主枝的合并。
8, tag
Tag用來進(jìn)行標(biāo)示必要的信息。當(dāng)您進(jìn)行一次公開發(fā)布之前,您有必要對主枝標(biāo)示"release 1.0"。這樣您以后可以隨時(shí)回到這個(gè)版本。
//to do: 請完善這里的描述

CVS命令行
在得到CVSROOT和你的口令之后,你可以試著登陸了。
首先,由于其他所有的GUI工具都是基于CVS基本協(xié)議的,而且他們可能會提供CVS的命令行或者等價(jià)形式作為顯示的一部分,所以你應(yīng)該對命令行操作有所了解。如果你還沒有一個(gè)cvs。exe的命令行程序,從http://www.redsaga.com/CVS_newbie_win32/www.cvsnt.org你可以得到一個(gè)cvsnt的下載連接,其中包含了一個(gè)命令行的cvs.exe程序。我們先從它開始(為了作為一個(gè)client使用,你不需要安裝cvsnt的server組件)。CVSNT的cvs.exe是專門為windows編寫的,你需要把cvs.exe放在你的path里面。
1.進(jìn)入命令行方式。
和VSS一樣,你也需要在本地有一個(gè)工作目錄對應(yīng)于一個(gè)repository。假設(shè)這個(gè)目錄是'd:workssandbox'。請切換到這個(gè)目錄。
輸入"cvs"。你會看到:

這些提示信息告訴您關(guān)于cvs的基本語法。cvs后面跟著的是全局參數(shù),然后是命令,后是命令的參數(shù)。
2.login
正確的login不會有任何輸出,否則會告訴你錯(cuò)誤原因。
cvs

3.下面我們看看這個(gè)CVS server中有哪些module。

4.假設(shè)現(xiàn)在我們工作的項(xiàng)目是projectX,下面我們需要得到它下面的全部文件。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd