CVS代碼管理器的使用



《CVS代碼管理器的使用》由會員分享,可在線閱讀,更多相關《CVS代碼管理器的使用(14頁珍藏版)》請在裝配圖網上搜索。
1、 CVS代碼管理器的使用 版本管理系統(tǒng)可以幫助開發(fā)人員有效地管理軟件資源的版本問題。CVS(Concurrent Version System)是目前最常用的版本管理系統(tǒng),而 ECLIPSE 是最流行的開放源碼的集成開發(fā)環(huán)境。在 ECLIPSE 中,與 CVS 相關的功能被統(tǒng)稱為小組開發(fā)環(huán)境。本系列的第 1 部分不僅解釋了 CVS 的相關術語,還詳細介紹了小組開發(fā)環(huán)境的建立過程;本系列的第 2 部分則試圖以一種簡明易懂的方式來講解 ECLIPSE 小組開發(fā)環(huán)境的使用方法。 1.前言 版本管理系統(tǒng)可以幫助開發(fā)人員有效地管理軟件資源(源代碼文件、配置文件等)的版本問題。版本管理系
2、統(tǒng)可以幫助開發(fā)人員追蹤文件的修改履歷;防止文件因疏忽而被錯誤的修改、刪除;在小組開發(fā)環(huán)境中,幫助多個開發(fā)人員保持文件的同步;通過文件的修改履歷,還可以幫助開發(fā)人員發(fā)現(xiàn)修改過程中產生的BUG,因此應用CVS可以在一定程度上提高軟件的開發(fā)效率?,F(xiàn)在很多開發(fā)工具中都集成了CVS功能,例如ECLIPSE、InteliJ、NetBeans等;雖然ECLIPSE等集成開發(fā)環(huán)境(IDE)對CVS提供了很好的支持,可以大幅降低CVS的使用難度,但是很多開發(fā)人員在使用CVS時還是不知所措。筆者認為這是由于他們不了解CVS的相關術語及CVS的工作模式所致。因此,本文首先介紹CVS的相關術語及CVS的工作模式。然后
3、通過一些實例與應用場景, 展示如何在ECLIPSE中使用小組開發(fā)環(huán)境。 本文所使用的ECLIPSE沒有安裝本地語言包插件,操作界面為英文。但理解了相關術語后,讀者即使在中文環(huán)境中也能正常操作。 2.CVS的相關術語與CVS工作模式 2.1 術語解釋 修訂版(revision):CVS版本管理系統(tǒng)用修訂版來管理文件的修改履歷,修訂版用版本號來表示,即修訂版號。對文件的每次修改(提交)都產生一個新的修訂版。 資源庫(repository):資源文件的集合,版本管理的容器。在ECLIPSE中被稱為CVS存儲庫。 模塊(module):資源文件的組織形式,在版本管理系統(tǒng)中的表現(xiàn)形式為目錄(
4、樹形結構,可以嵌套)。 輸入(import):將處于資源庫之外的軟件模塊登錄到資源庫。 輸出(export):從資源庫中取出模塊。使用export方式取出的模塊拷貝不包含版本管理的相關信息,對該模塊拷貝的修改也不能反映到資源庫。 工作拷貝(working copy):版本管理系統(tǒng)是一個典型的CLIENT/SERVER系統(tǒng)。用戶對資源的修改不是直接在SERVER端進行的,而是根據(jù)資源庫的內容創(chuàng)建一個本地的工作拷貝,用戶在工作拷貝中工作,工作完成后再將修改的內容提交到資源庫。 簽出(checkout):獲得工作拷貝的操作。此前使用過Visual Source Safe的讀者需注意,在Vis
5、ual Source Safe中的checkout用于鎖定文件。 簽入/提交(checkin/commit):將對工作拷貝的修改反映到資源庫中的操作。在CVS中使用的術語是提交;在Visual Source Safe中使用的術語是簽入。 更新(update):將資源庫中的最新狀態(tài)反映到工作拷貝的操作。 沖突(conflict):在資源庫同工作拷貝之間狀態(tài)不一致的狀態(tài)下進行簽入或更新操作時,版本管理系統(tǒng)可能會盡量進行合并,如果版本管理系統(tǒng)不能完全處理上述不一致,就稱之為產生了沖突。 快照(snapshot):在某一時刻,模塊中文件狀態(tài)(包括文件內容及其版本管理元信息)的靜態(tài)影像。 標簽
6、(tag):由于CVS以文件為版本管理的基本單位,隨著開發(fā)的進行,對不同的文件的修改次數(shù)是不一樣的,各個文件的修訂版號會因此而變得參差不齊。這不便于模塊的管理。為此可以對某個時刻的快照賦予一個標識名稱,標識名稱就被稱為標簽。將來通過標簽就可以獲得模塊在該時刻的快照。通過標簽所獲得的快照是靜態(tài)的,不能被修改。在ECLIPSE中,標簽與版本(Version)是同義詞,一般都用于文件集合。需要指出的是:在很多中文資料里,修訂版與版本往往不加區(qū)分,有時會將單個文件的修訂版也稱為版本。例如,"A文件最新版本是1.3",這句話中的版本實際上指的是修訂版。因此,需要根據(jù)上下文來確定版本的意義。 分支(br
7、anch):分支是一種特殊的標簽。從分支中簽出的資源是可以被修改的。引入分支是為了更好地支持項目的并行開發(fā)過程。 2.2 工作模式 為了解決因多人同時開發(fā)而可能產生的沖突問題,版本管理系統(tǒng)有兩種常用的工作模式。 模式一:鎖定-修改-解鎖模式 在這種工作模式中,一個開發(fā)人員為了能夠修改文件,首先必須鎖定文件,鎖定文件操作賦予了開發(fā)人員修改文件的權力。從一個文件被鎖定后到其被解鎖前,其他的開發(fā)人員不能再鎖定該文件。這種工作模式適用于小規(guī)模的開發(fā)小組。如果采用這種工作模式,開發(fā)人員應盡量少、盡可能晚地鎖定文件并盡可能早解鎖文件。模式一是Visual Source Safe的缺省工作模式。
8、模式二:拷貝-修改-合并模式 在這種工作模式中,每個開發(fā)人員都從資源庫獲得自己的工作拷貝,然后就可以自由的在工作拷貝中繼續(xù)開發(fā),開發(fā)完成后再向資源庫提交自己的工作成果。如果在提交時產生了沖突,則必須在解決沖突后才能再提交。模式二比模式一具有更好的并發(fā)性,因而也適用于中、大規(guī)模的開發(fā)小組。模式二是CVS所采用的工作模式。 鎖定-修改-解鎖模式是一種悲觀的鎖定模式,它假定在開發(fā)過程中可能會產生大量的沖突;而拷貝-修改-合并模式則比較樂觀,它假定在開發(fā)過程中軟件的設計及開發(fā)任務的分配都比較合理(軟件的模塊化程度高,開發(fā)人員一般各司其職),在開發(fā)過程中即使會產生沖突,但產生沖突的機率比較小。為了更
9、好地使用CVS,我們在使用CVS時也應該遵循它的設計前提,努力提高軟件的設計水平及項目管理的能力,否則將陷入疲于解決提交沖突的尷尬境地。 如果想進一步了解CVS的理論知識,請參看文后的參考資料1和參考資料2。 3.環(huán)境安裝 LINUX與WINDOWS是目前應用最普及的操作系統(tǒng)。下面首先介紹CVS服務器在兩種操作系統(tǒng)上的安裝與配置過程,然后介紹如何從ECLIPSE連接CVS服務器,最后介紹如何使用ECLIPSE共享模塊。無論后臺的CVS安裝在何種操作系統(tǒng)之上,對于ECLIPSE來說,與CVS服務器建立了連接之后其使用方法是一樣的。 3.1 在FEDORA CORE3上安裝、配置CVS
10、3.1.1 安裝CVS 本文所使用的LINUX發(fā)行版為FEDORA CORE3。首先,查看在系統(tǒng)中是否已經安裝了CVS服務器,如果沒有安裝,則可以從FEDORA CORE3的發(fā)行光盤或從網絡上下載相應的軟件包,本文中使用的軟件包為cvs-1.11.17-7.FC3.i386.rpm。安裝過程如下(在本節(jié)中,綠色的為命令行,緊隨命令行的黑色文本為系統(tǒng)響應): warning: cvs-1.11.17-7.FC3.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... #######
11、#################################### [100%] 1:cvs ########################################### [100%] 可以用如下命令查詢系統(tǒng)中是否已經安裝了CVS服務器: [jiangch@emulator ~]$ rpm -qa | grep cvs 確認在文件/etc/services中含有以下內容: cvspserver 2401/tcp # CVS client/server
12、 operations 在目錄/etc/xinetd.d中建立一個文件cvspserver,文件內容如下: service cvspserver { socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs server_args = --allow-root=/home/jiangch/cvsrepo pserver -f
13、 } 其中,--allow-root的值為CVS資源庫的根目錄。如果建立自己的CVS服務器,需要根據(jù)實際情況作相應的修改。 3.1.2 啟動CVS服務 在FEDORA CORE中的CVS服務由xinetd管理,安裝完成后通過下面的命令可以啟動CVS服務: [root@emulator cvsres]# /etc/init.d/xinetd restart Stopping xinetd: [ OK ] Starting xinetd:
14、 [ OK ] 3.1.3 初始化資源庫 在LINUX中,可以用下面的命令初始化CVS資源庫: [root@emulator cvsres]# cvs -d /home/jiangch/cvsrepo init 3.1.4 添加CVS用戶 初始化資源庫后,會在CVS資源庫的根目錄下生成一個新的目錄CVSROOT。在目錄中新建一個名為passwd的文件,為了簡便,文件內容的格式為: 用戶帳號:密碼 每個用戶一行,用戶帳號應在系統(tǒng)中存在。由于密碼必須是加密的,可以從文件/etc/shadow中提取。這樣CVS用戶將與LIUNX系統(tǒng)用戶
15、具有相同的帳號和密碼。 3.1.5 注意事項 在缺省狀態(tài)下LIUNX的安全性比較高,對目錄、文件的讀寫操作有較嚴格的控制。為了在LINUX下方便的使用CVS,最好建立一個組(group),例如"cvsusers",將CVS的用戶都加入"cvsusers"中。這樣一來,只要將CVS資源庫根目錄及其所有子目錄(含目錄中的所有文件)的讀寫權限賦予組"cvsusers",組中的所有用戶都能使用CVS。 3.2 在WINDOWS XP上安裝、配置CVSNT 本文以下的內容都基于WINDOWS XP+CVSNT+ECLIPSE。整個實驗環(huán)境包括兩臺以WINDOWS XP2為操作系統(tǒng)的計算機,其中一
16、臺名為"chjnb"的計算機既作為CVS服務器又安裝了ECLIPSE作為客戶端,而另一臺只安裝了ECLIPSE。CVSNT與ECLIPSE都采用了本文寫作時的最新版本,分別是CVSNT2.5.03.2151和ECLIPSE3.1.1。ECLIPSE3.1.1可以和CVSNT2.0.58b以上版本很好的協(xié)同工作(見參考資料3)。 CVSNT最初起源于CVS,也是一個開放源碼產品,具有跨平臺的能力,可以運行在多種操作系統(tǒng)之上。WINDOWS版的CVSNT在安裝和使用上都比較方便,對WINDOWS用戶而言具有很強的親和力。WINDOWS版的CVSNT經過多年的發(fā)展,其功能與穩(wěn)定性得到不斷的加強,完
17、全可以勝任實際工作中的版本管理任務。而且相對于CVS而言,CVSNT還擴展了不少功能。CVSNT與CVS的比較請參看參考資料4。 3.2.1 安裝CVSNT CVSNT可以從以下地址獲得。在WINDOWS系統(tǒng)上CVSNT有安裝程序cvsnt-2.5.03.2151.msi(隨版本的不同文件名也不同)。一般采取缺省安裝方式安裝后,CVSNT即可正常工作,如果想控制安裝過程,則可以選擇定制安裝方式。例如在圖1、圖2中修改了安裝目錄。 圖1:選擇CVSNT的安裝類型 圖2:修改CVSNT的安裝目錄,選擇CVSNT的可安裝組件 安裝完成后可以通過菜單操作【開始】→【CVSNT】→【C
18、VSNT Control Panel】或控制面板打開CVSNT的控制管理臺。為了使用CVSNT進行版本管理,首先必須建立一個資源庫。在CVSNT的控制管理臺中選擇"Configuration Repository"面板并單擊"Add",出現(xiàn)如圖3所示的畫面。 圖3:初始化資源庫 在Location中填入資源庫的位置,在Description中填寫該資源庫的說明信息(可以為空)。值得注意的是當Location包含多級目錄時,Name輸入框中的缺省值不對,需要修改,例如可以使用最后一級目錄名,如圖3。最后點擊"OK"按鈕,在隨后出現(xiàn)的詢問是否初始化資源庫的確認對話框中選擇"Yes"即可。
19、 3.2.2 Windows防火墻 如果在安裝有CVS服務器的計算機上使用的是WINDOWS XP2操作系統(tǒng),并且WINDOWS XP2自帶的Windows防火墻處于啟用狀態(tài),則不能從其它計算機連接CVS服務器。讀者可以暫時關閉Windows防火墻或者將CVSNT服務的端口號(2401)添加到Windows防火墻的例外中,其設置步驟如下: 1.從WINDOWS操作系統(tǒng)的控制面板中雙擊"Windows防火墻"的圖標,出現(xiàn)如圖7所示的畫面。 圖7:Windows防火墻控制臺 2.在圖7中單擊"添加端口"按鈕,請按圖8將CVSNT的服務端口加入防火墻的例外列表。 圖8:將CVSNT的服
20、務端口加入防火墻的例外列表 3.在圖8中按"確定"按鈕就把CVSNT的服務端口加入防火墻的例外列表,見圖9。 圖9:CVSNT的服務端口已被加入到防火墻的例外列表 如果使用了其他的防火墻產品,也應進行相應的設置。 3.2.3 建立CVS用戶 為了在我們的實驗環(huán)境中模擬多個用戶,還需要在CVS服務器中建立至少兩個CVS用戶。由于CVSNT安裝后采用混合認證方式工作,CVS服務器的系統(tǒng)用戶和在CVS本身管理的用戶文件中定義的用戶都能使用CVSNT服務。為了簡便,本文建立了兩個系統(tǒng)用戶。在WINDOWS XP中可以通過計算機管理這一工具追加系統(tǒng)用戶,如圖6所示。除了管理員帳號jia
21、ngch(我將管理員Administrator重命名為jiangch),還添加了一個帳戶cvsuser2。 圖6:添加用戶帳號 現(xiàn)在可以在另一臺計算機的ECLIPSE中,以cvsuser2為用戶名建立與CVSNT服務器的連接。至此,我們就建立了一個完整的實驗環(huán)境。本文的實驗環(huán)境用了兩臺計算機,如果計算機的內存夠大,也可以在一臺計算機上建立一個完整的實驗環(huán)境。 3.3 建立ECLIPSE與CVS服務器的連接 ECLIPSE可以從下載。ECLIPSE無需安裝,在已安裝JRE或JDK1.4.2或以上版本的計算機上,只要將下載的文件解壓后即可運行。為了能在ECLIPSE使用CVS,需要建立
22、ECLIPSE與CVS服務器的連接。其操作步驟如下: 1.打開CVS Repository視圖(Perspective),可以通過如下菜單操作實現(xiàn):【Window】→【Open Perspective】→【Other...】。在出現(xiàn)的對話框中選擇CVS Repository Exploring。 2.在CVS Repository視圖中單擊右鍵,選擇【New】→【Repository Location...】(在ECLIPSE中,如果菜單項的后面有省略號,則表示選擇該菜單項后,將出現(xiàn)對話框供用戶進一步設定相關信息)。出現(xiàn)如圖4所示對話框。在對話框中填入適當?shù)男畔⒓纯?。例如,根?jù)圖中的示范信
23、息,將與我們在前面步驟所安裝的CVSNT服務器建立連接。需注意的是:在Host輸入框中可以輸入CVS服務器的名字或IP地址;在連接類型下拉框中選擇pserver,這是CVSNT+ECLIPSE最簡便的配置方式。 圖4:在ECLIPSE中建立與CVSNT服務器的連接 建立連接后,在ECLIPSE的CVS資源庫透視圖中的結果如圖5所示。其中的HEAD表示主分支(主干)、Branches是分支的集合、Versions是標簽的集合、Dates是用時間做標簽的集合。由于jiangch是管理員帳戶,因此還顯示了CVSNT的管理文件集合CVSROOT。如果以非管理員帳戶連接到CVSNT服務器,則看不
24、到上述CVSROOT。 圖5:CVS資源庫視圖 4.模塊的輸入與簽出 4.1 輸入(import) 在正式的項目開發(fā)中,輸入模塊通常由CVS管理人員或項目經理完成,一般的開發(fā)人員不需要進行此項工作。在ECLIPSE中,可以將整個項目作為一個模塊導入CVS資源庫。這也是實際工作中經常采用的工作方式。我們事先在計算機chjnb的ECLIPSE中建立了一個項目UnitTest,如圖10所示。 圖10:演示用項目的導航器視圖 為了將項目導入CVS資源庫:打開ECLIPSE,選擇希望導入CVS資源庫的項目(project),點擊右鍵,在出現(xiàn)的彈出菜單中依次選擇【Team】→【Sh
25、are Project...】,出現(xiàn)圖11。 圖11:共享項目--選擇資源庫 點擊Next按鈕,在下一個對話框中選擇"use project name as a module name",再點擊Next按鈕,此時,出現(xiàn)如圖12所示的對話框。 圖12:共享項目--控制共享內容 有一些文件,我們不想加入CVS資源庫。例如圖9中的bin目錄,里面放的是編譯時生成的class文件。此時,可以在上述對話框的bin目錄上點擊右鍵,在出現(xiàn)的彈出菜單中選擇【Add to cvsignore...】,出現(xiàn)圖13。(注:在preference中也可以進行設定)在圖13中單擊OK按鈕。 圖
26、13:共享項目--選擇哪類資源不用放入資源庫 隨后單擊圖12中的Finish按鈕,在接下來的一系列對話框中,選擇Yes。隨后出現(xiàn)如圖14的對話框,在輸入框中輸入注釋,例如:"XXX項目初始化"。 最后單擊OK按鈕。ECLIPSE將向CVS資源庫中導入代碼模塊。 圖14:共享項目--填寫注釋 模塊導入成功后, java視圖如圖15所示。處于CVS管理狀態(tài)的目錄和文件,其圖標的右下角有一個小圓柱。由于在前面的操作中,我們將bin目錄排除了,因此bin目錄顯示為通常的圖標。在文件的后面,顯示了該文件的修訂版號,而在目錄的后面則沒有,這是因為CVS系統(tǒng)版本管理的對象只是文件,而目錄不是C
27、VS版本管理的對象。所有文件的初始修訂版號均為1.1。輸入成功后,整個項目本身也處于簽出的狀態(tài)。 圖15:處于版本管理狀態(tài)下的項目視圖 4.2 簽出(checkout) 如果想通過其它計算機上的ECLIPSE獲得工作拷貝,按2.2的操作成功建立連接后,CVS Repository透視圖見圖16。在主分支HEAD下的 UnitTest上點擊右鍵,在出現(xiàn)的彈出菜單中選擇【Check Out】,這將簽出CVS資源庫中的模塊UnitTest,并在ECLIPSE建立一個名為UnitTest的新Project。簽出成功后轉到java視圖,會看到一個和圖15類似的界面。 圖16:在CVS資源庫中
28、已經存在一個共享項目UnitTest 在菜單中還有一項【Check Out As...】,通過此菜單項,可以對簽出進行更細致的控制,例如,可以更改Project名;可以將簽出的內容追加到已有Project中。 結束語 在本系列的第1部分,介紹了CVS的相關術語及小組開發(fā)環(huán)境的建立過程。在本系列的第2部分,將詳細介紹ECLIPSE小組開發(fā)環(huán)境的使用方法。 參考資料 學習 · 免費電子書《Open Source Development with CVS》: · CVS和Nightly Build技術,楊錦方,清華大學出版社,2002 · CVSNT與ECLIPSE版本配合的相關信息: · CVSNT與CVS的比較: · ECLIPSE官方網站: · CVSNT的官方網站: · 在DeveloperWork網站上還有一篇關于ECLIPSE與CVS的文章:使用 Eclipse 平臺共享代碼 -- Eclipse 如何使用源代碼版本控制 獲得產品和技術 · ECLIPSE下載地址: · CVSNT下載地址:
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。