Eclipse中CVS版本管理
Eclipse中CVS版本管理
1.1?CVS簡介
CVS是Concurrent Versions System(并發版本系統)的簡稱。它是一個開放源代碼的項目,是當前最流行的版本控制系統,目前絕大部分Open Source項目都使用它來做版本管理。微軟的VSS也可以用來進行Java項目的版本管理,但在學會使用Eclipse后,使用CVS。
CVS采用客戶機/服務器體系,代碼、文檔的各種版本都存儲在服務器端,開發者首先從服務器上獲得一份復制到本機,然后在此基礎上進行開發。開發者可隨時將新代碼提交給服務器,也可以通過更新操作獲得最新的代碼,保持與其他開發者的一致。
由于Eclipse本身內置了CVS客戶端,只要再建立一個CVS服務器就可以使用這一功能強大的版本控制系統。CVS的功能雖強大,但一般項目通常只用到其20%的功能,所以只要了解最常用的操作就可以了。本系統是的是Eclipse 3.0.1版本,下面將以面向實際項目使用需要的方式來介紹CVS。
1.2?CVS服務器端的安裝與配置
CVS起源于UNIX/Linux平臺,由于我們平時大多使用的是Windows系統,所以在UNIX/Linux平臺下安裝使用CVS服務器端的方法,我們不再重復。CVS服務器在Windows平臺的版本:CVSNT,我們下面將著重介紹CVSNT的安裝。
首先,我們得下載CVSNT,可以到CVSNT主頁http://www.cvsnt.com/downloads/去下載它,我們下載的是cvsnt 2.0.58d版本,把它安裝在Windows XP系統上。
(1)運行安裝程序,完全按照它的默認設置,連續單擊“next”按鈕,即可完成安裝。我們把cvsnt安裝在默認的“C:"Program Files"cvsnt”目錄下。
(2)通過Windows選擇“開始→所有程序→CVSNT”選項,打開cvsnt的設置面板“Service control panel”,如圖1.1所示,表明上面兩個服務已經啟動。
!注意:如果提示找不到rundll32.exe,則單擊“瀏覽”按鈕,指向“C:"windows"system32" rundll32.exe”并運行它。
(3)單擊圖1.1中的“Repositories”選項卡,再單擊Add按鈕,創建一個存放版本文件的目錄“c:/cvsfile”,如圖1.2所示,單擊“OK”按鈕后,在彈出的兩個窗口中都回答“是”。
!注意:建議在“Name”欄改寫成絕對路徑“c:/cvsfile”,就能夠確保在cvsnt安裝后可以正常使用。
圖1.1?Service control panel界面??????????????????圖1.2?建立存放版本文件的目錄
(4)轉到“Compatibility”選項卡,將3個選項都選上,如圖1.3所示。
!注意:這一步非常重要,否則CVS 2.0.58d無法在Eclipse 3.0.1下正常使用,如果你使用Eclipse 3.1M4版,則此步設置可跳過。
圖1.3?Compatibility選項卡
(5)CVS客戶端連接服務器,需要在服務器端分配一個用戶名,并且用戶名要求必須是Windows的登錄用戶。我的Windows XP系統的用戶名為giles,密碼為空。進入Windows的命令行窗口,如圖1.4所示,轉到C:"Program Files"cvsnt目錄下,輸入命令cvs?-d?c:"cvsfile?passwd?-a?giles,按回車鍵輸入giles在CVS上的登錄密碼(我們設置的密碼為111111)。
!注意:安裝好CVSNT之后,也可以通過“控制面板”里的“用戶賬號”來創建一個新用戶,這時該用戶自動成為CVS用戶,密碼相同。
至此,我們完成了CVS服務器部分的全部設置,現在客戶端可以使用Admin為賬號來登錄CVS服務器。
圖1.4?命令行窗口
(6)其他
如果要將CVS的文件移植到另一臺電腦上,或者原cvs服務器所在電腦重裝了操作系統,這時就要涉及移植或恢復CVS。按照圖1.2的操作將它注冊一下即可。由此可知,備份CVS上的文件只需將cvsfile目錄復制一份就可以了。
如果要對權限要求比較嚴格的話,那么就需要設置CVS用戶的權限,CVS的權限是和操作系統權限相關的(用戶都是操作系統的用戶)。
1.3?CVS客戶端的配置
1.3.1?配置Eclipse的客戶端,連接CVS服務器
打開Eclipse中的“CVS資源庫研究”透視圖,然后在左部的“CVS資源庫”視圖單擊右鍵,在右鍵菜單中選擇“新建→資源庫位置”選項。在彈出的窗口輸入CVS的相關信息,如圖1.5所示,填完后單擊“完成”按鈕。
圖1.5?添加CVS資源庫
!注意:
(1)資源庫路徑用CVS服務器上的絕對路徑,即圖1.2中Name文本框的值。
(2)密碼是上面用cvs命令行設置的111111。如果是通過“控制面板”里的“用戶賬號”來創建用戶,那么此密碼即為該用戶的Windows登錄密碼。
1.3.2?將項目提交到CVS服務器上
將項目提交到CVS服務器上的步驟如下:
(1)轉到Eclipse的“資源”透視圖。右鍵單擊項目名myproject,然后選擇“小組→共享項目”選項,如圖1.6所示。在彈出的“共享項目”窗口中,接受默認設置,直接單擊“下一步”按鈕。
圖1.6?“共享項目”窗口
(2)如圖1.7所示,窗口提示輸入模塊名,接受默認選項,單擊“下一步”按鈕。
圖1.7?共享項目-輸入模塊名
(3)如圖1.8所示,在窗口中選擇要提交到CVS上的項目資源(即文件),不必作任何設置(默認為提交項目所有文件),直接單擊“完成”按鈕。
圖1.8?共享項目-項目資源
(4)如圖1.9所示,連續彈出兩個窗口,都單擊“是”按鈕。又彈出一個窗口要求輸入提交注釋,寫上一些說明文字(也可以為空),單擊“確定”按鈕,Eclipse開始將項目文件提交到CVS服務器上。
圖1.9?“資源提交”對話框
1.3.3?CVS服務器上的項目導入到Eclipse中
如果新成員加入項目開發團隊,這時就需要將CVS服務器上的項目導入到自己的Eclipse中。為了方便模擬,再安裝一個Eclipse,安裝目錄要不同(兩個Eclipse同時運行也不會有沖突)。將CVS服務器上的項目導入到Eclipse中的步驟如下:
(1)在主菜單選擇“文件→導入”選項,彈出如圖1.10所示的窗口。
圖1.10?“導入”窗口
(2)選擇“從CVS檢出項目”,單擊“下一步”按鈕。彈出一個設定資源庫的位置窗口,接受默認選項,直接單擊“下一步”按鈕,彈出如圖1.11所示的窗口。
圖1.11?填寫CVS上的模塊名稱
(3)在模塊名稱文本框輸入myproject,單擊“下一步”按鈕,彈出如圖1.12所示的窗口。注意:myproject這個名稱不是項目名稱,而是項目共享到CVS上時所取的模塊名(模塊名的設置參見圖1.7),通常將CVS模塊名取成和項目名相同。
圖1.12?“檢出為”窗口
(4)在項目名稱文本框輸入myproject。Eclipse會以此名稱生成一個項目,并將CVS的文件導出到此項目下。在該窗口中直接單擊“完成”按鈕,CVS服務器上的最新文件開始導入到本機中。
1.4?文件提交與更新的方法
1.4.1?CVS和VSS的不同之處
(1)用VSS必須check out(檢出)文件才能修改此文件,而此時該文件將被鎖定,其他人不能再修改(可以讀),必須要等文件被上一個修改者check in(提交)才行,也就是說VSS同一文件一次只允許一個人修改。
(2)CVS則使用完全不同的機制,多人可以同時修改同一文件。文件不會像VSS一樣被鎖定,所以也就沒有修改文件之前要check out(檢出)的操作,CVS的最基本操作是?“提交文件到CVS”和“從CVS更新文件到本機”。在CVS中如果多人同時修改了一個文件,在提交時會提示代碼沖突,會提供一個窗口來合并這些修改,但這樣的合并修改操作是很麻煩的,因此應盡可能地避免多人同時修改一個文件。
1.4.2?文件的提交和更新
1.將修改的文件提交到CVS
在HelloWorld.java中增加一條輸出語句“System.out.println("第一次修改");”,然后保存。右鍵單擊窗口右側“導航器”視圖中的HelloWorld.java文件,在彈出菜單中選擇“小組→提交”選項,如圖1.13所示。
圖1.13?提交界面
2.從CVS更新文件到本機
刪除掉HelloWorld.java中的語句“System.out.println("第一次修改");”然后保存,這時要將CVS服務器上的最新代碼更新到本地,有以下兩種方法:
(1)右鍵單擊HelloWorld.java文件,在彈出的菜單中選擇“替換為→HEAD的最新內容”選項。
(2)右鍵單擊HelloWorld.java文件,在彈出的菜單中選擇“小組→與資源庫同步”選項,在彈出的同步界面,如圖1.14所示,單擊“將當前更改從右邊復制到左邊”按鈕,然后保存。
圖1.14?資源庫同步界面
有的人可能會問:“右鍵單擊HelloWorld.java文件,然后選擇‘小組→更新’這種更新方法,為什么不用呢?”
這種更新方法是將CVS的最新版更新到本機,當本機文件沒有修改的時候才用這種方法。如果對HelloWorld作了修改,CVS上的反而是舊內容了,這時再用這種更新方法則對本地的HelloWorld.java文件不會產生任何影響。
1.4.3?解決文件提交的沖突
在多人項目開發中,會同時修改一個文件,就會產生提交沖突,下面說明一下如何解決這種沖突。
在上面檢出項目時,已經另外安裝了一個Eclipse,相當于多了一個開發者,原來的稱為Giles,新加入的叫Tom。Giles和Tom電腦上的HelloWorld.java的版本都是1.2。這時Giles在文件中增加一條語句“System.out.println("Giles第1次修改");”,同樣Tom也在文件中作了類似修改,如圖1.15所示。
圖1.15?兩開發者對代碼的修改情況
Giles先提交HelloWorld.java文件,這時版本變成了1.3,由于Giles是第一個提交的,所以他不會遇到代碼沖突。Tom后提交,這時就會和Giles先提交上去的代碼產生沖突。因為如果用Tom的代碼更新CVS,則Giles的修改就會被清除,所以Eclipse此時就會報文件沖突,不允許直接提交。解決辦法如下:
右鍵單擊“HelloWorld.java→小組→更新”選項,如圖1.16所示。
圖1.16?更新后的界面
此時HelloWorld.java的版本已經變成了1.3,更新后的沖突也已標記出來。這時就可以根據代碼中的標記來合并修改,修改完畢后再提交到CVS,此時版本變成了1.4,如圖1.17所示。
圖1.17?代碼合并修改后的界面
Eclipse在文件更新時,會將Tom的舊文件保存為一個稱為“.#HelloWorld.java.1.2”的備份。這個備份文件不會被提交到CVS,因為Eclipse中已經將這類文件作了忽略設置。忽略設置的界面如圖1.18所示,在主菜單選擇“窗口→首選項”選項可打開此窗口。
圖1.18 提交到CVS時被忽略的資源的設置界面
1.4.4?如何忽略掉不想提交的文件
當提交一個項目時出現如圖1.19所示的情況,圖中的bin目錄包含的是編譯后的class文件,沒有必要將它提交到CVS上。右鍵單擊它,然后在彈出的快捷菜單中選擇“添加至.cvsignore”,這樣bin目錄就被忽略掉,不會提交到CVS上。
圖1.19?忽略提交
1.4.5?實踐建議
(1)把項目做成模塊目錄(Java包),各人負責自己的模塊和目錄,這樣就不容易造成重復修改。
(2)做到每日提交,都要將各自完成的代碼提交到CVS上,并且提交的代碼要求是完整可運行的代碼,關鍵是要保證其他人更新你的代碼之后不會引起錯誤。
(3)對于共用型的文件,要做到即時修改,即時提交。
(4)任何人在修改文件之前,先更新CVS的最新版到本機。
(5)項目團隊的Eclipse等開發環境(安裝目錄、軟件版本等)要保持一致。這樣就可以將整個項目共享到CVS,團隊成員也可以從CVS上更新整個項目,而不必擔心因為一些項目配置文件不同導致更新項目后出錯。另外,當新團隊成員加入時,只要導入CVS上的整個項目,無須再配置項目,就可以開發運行。
1.5?在CVS上為軟件打包一個版本
在開發告一段時間,就要打包一個版本,打包版本的操作步驟如下:
(1)右鍵單擊“項目名”,在彈出的快捷菜單中選擇“小組→標記為版本”選項。此時如果有修改,但沒有提交到CVS上,則會彈出下如圖1.20所示的一個提示框,如果單擊“確定”按鈕,則未提交的修改就不會包含在本次打包的這一版本中。
(2)如圖1.21所示,在窗口中為此版本起一個名稱為V001。由于此名稱可能已存在于CVS中,所以下面還有一個復選框,如果選上該復選框,在打包時就會替換掉同名的老版本;如果沒有選上,則在有同名版本時,就會彈出錯誤提示框。
圖1.20?確認未提交的更改??????????????????????????圖1.21?給版本起名
如果版本已經打包,但后來發現有一個文件有點問題,于是想把這一個修改的文件更新到上一個版本中,但另外一些修改的文件則不想更新到上一個版本。這時如果再通過右鍵單擊項目名來打包,則項目所有修改的文件都會被更新到上一個版本中。
正確的操作步驟如下:
(1)將修改的文件提交到CVS上。
(2)右鍵單擊該修改文件的“文件名”,在彈出的快捷菜單中選擇“小組→標記為版本”選項。
(3)在圖1.21中,還是起名V001,并且要選擇復選項,然后單擊“確定”按鈕。
此操作和打包項目版本惟一不同之處是:前者右鍵單擊“項目名”,后者右鍵單擊修改文件的“文件名”。
!說明:CVS打包版本并非是將項目文件再復制一份,如果去c:"cvsfile目錄中查看提交的項目文件,就會發現項目文件只有一份,這一份文件中會記錄著每一次的更改,所以CVS打包版本只是做了一個更改位置的標志。
1.6?將項目替換成CVS上的其他版本
接著1.5節內容,當打包成版本之后,如果要將此版本還原回項目中,則操作步驟如下:右鍵單擊“項目名”,然后在彈出的快捷菜單中選擇“替換為→另一個版本或分支”選項,得到如圖1.22所示窗口,選擇版本V001,單擊“確定”按鈕。
!注意:此操作會將本地所有的修改都覆蓋掉,所以在操作之前先把本地修改提交到CVS上保存。
圖1.22?CVS的分支版本列表
1.7?修改舊版本的BUG
如果已經發布了軟件的1.0版,而現在正在開發2.0版,但用戶在使用1.0版的時候發現了一些BUG,這時就需要修改1.0版的這些BUG,具體修改操作步驟如下:
(1)將CVS導出成另外一個項目。參見1.3.3小節,其他步驟都一樣,僅在最后一步時,輸入另外一個項目名myproject2。這樣分成兩個項目后,修改舊版本和開發新版本就可以同時進行而不互相干擾。
(2)用1.6節的替換版本操作將myproject2項目替換成V001版本(假設V001就是出問題的1.0版)。如圖1.23所示,在圖中可以看到myproject2的后面跟著一個V001版本????標志。
圖1.23?從CVS導入的myproject2
(3)這時還不能在myproject2上修改,即使修改了也不能提交CVS。因為還差一步,即需要為V001版創建一個分支,操作步驟如下:右鍵單擊myproject2的項目名,然后選擇“小組→分支”選項,在彈出如圖1.24所示的窗口中輸入分支名V001_patch,并單擊“確定”按鈕。
!說明:很容易把“分支”和“版本”看成類似的概念,但實際上“分支”是和HEAD的概念比較接近,“提交”操作只能將文件提交到HEAD或分支上。
(4)如圖1.25所示,myproject2的項目名后就有了一個分支名V001_patch,表示該項目已經在這個分支下工作了。
圖1.24?設定分支名?????????????????????圖1.25?myproject2在V001_patch分支下
(5)現在可以在myproject2項目中將BUG修改好,并提交到CVS上了。修改不是提交到HEAD上,而是提交到分支V001_patch上,所以不會影響到軟件2.0版的開發。提交之后,文件尾部的版本號也起了變化,如圖1.26所示。
圖1.26?在分支下的程序版本號?
(6)當修改完BUG后,就可以給軟件再打一個版本V100_1,并將修正了BUG后的版本發布給用戶。
1.8?小?結
我們介紹CVS的從服務器安裝到客戶端具體操作的整條開發線的使用流程,其中文件提交與更新是項目開發中使用最頻繁的操作,我們詳細講述了具體的操作流程,并給出了由項目開發經驗中總結出來的實踐建議。通過上面的學習,大家就可以輕松地在項目中使用CVS來進行版本管理。
本文轉自kenty博客園博客,原文鏈接http://www.cnblogs.com/kentyshang/archive/2007/12/05/983272.html如需轉載請自行聯系原作者
kenty
總結
以上是生活随笔為你收集整理的Eclipse中CVS版本管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle表记录字节长长度的两种计算方
- 下一篇: RHEL/CentOS6.4 x64 V