在Eclipse里使用SVN必裝Subclipse插件
要在Subversion(SVN)這種控制系統(tǒng),要在Eclipse IDE中使用Subversion,必須裝載Subversion插件,也就是Subclipse插件,本文介紹Subclipse插件的安裝和使用。
安裝Subclipse
安裝Subclipse的最好方法是使用Eclipse Update Manager。在Eclipse 3.1中,它位于Help -> Software Updates -> Find and Install...菜單下。請(qǐng)選擇Search,查找要安裝的新特性,并以http://subclipse.tigris.org/update作為URL添加New Remote Site。
圖1:使用Eclipse Update Manager安裝Subclipse
掃描完更新后,您會(huì)看到一個(gè)可用特性的列表。我寫這篇文章時(shí),Subclipse 0.9.33是最新的更新版本。
圖2:選擇最新的Subclipse更新版本
在接下來的界面中,會(huì)請(qǐng)求用戶接受許可證并選擇安裝位置。建議不要將新插件(包括Subclipse)安裝在默認(rèn)的Eclipse安裝目錄下,最好將其放在一個(gè)外部擴(kuò)展位置中。這會(huì)使手動(dòng)卸載這些特性更加容易,如果需要的話;同時(shí)也使插件可以在多個(gè)版本的Eclipse安裝之間共享,比如發(fā)行版、嘗鮮(early access)穩(wěn)定版(M1、M2等等)和集成IDE版本。
圖3:選擇安裝位置
此時(shí),Update Manager已下載并安裝了所選特性,然后請(qǐng)求重啟Eclipse。
一旦重啟Eclipse,用戶就會(huì)在Preference對(duì)話框中看到一個(gè)新的SVN區(qū)域,并且還會(huì)看到有關(guān)Subversion活動(dòng)的其他視圖??梢允褂肳indow -> Show View -> Other...菜單將這些視圖添加到Java Perspective中。
圖4:添加關(guān)于Subversion活動(dòng)的視圖
我通常將SVN Repository視圖添加到Quick Views中,而將SVN Resource History添加到位于Java Perspective工作區(qū)底部的一個(gè)標(biāo)簽組中。這樣,在開發(fā)過程中,這兩個(gè)視圖就近便可用了,同時(shí)也便于利用拖放來運(yùn)行某些任務(wù),比如“獲得資源歷史”(從諸如Navigator、Package Explorer、SVN Repository和Synchronize之類的面向資源的視圖到SVN Resource History視圖)。
#p#
在Subclipse中配置SVN接口
可以配置Subversion服務(wù)器來使用下列協(xié)議之一:
•SVN協(xié)議,一種輕量級(jí)的有狀態(tài)協(xié)議,由獨(dú)立的Subversion服務(wù)器(svnserve)所使用。安全版本svn+ssh使用基于ssh的隧道。 •http協(xié)議,基于WebDAV擴(kuò)展,通常被作為模塊部署在Apache HTTP服務(wù)器上。安全版本使用https,dev2dev CodeShare上的Subclipse安裝使用的就是該協(xié)議。 •file協(xié)議,用于訪問本地可用的Subversion庫(例如,共享驅(qū)動(dòng)器上的Subversion庫),它是最少選擇的庫。 Subclipse使用專門的適配器抽象化來利用上述協(xié)議。可以在Window -> Preferences -> Team -> SVN對(duì)話框的插件屬性中選擇下列適配器中的一種。
圖5:選擇適配器
每一種適配器都有其自身的優(yōu)點(diǎn):
•JavaSVN是惟一完全基于Java的Subclipse客戶端,是默認(rèn)支持的。注意,JavaSVN不支持file:///協(xié)議。 •JavaHL是包裝本地Subclipse API的瘦包裝器。該適配器是為Win32平臺(tái)預(yù)構(gòu)建的,但是在其他所有的平臺(tái)上必須手動(dòng)構(gòu)建(除非Unix發(fā)行版中包含它)。 •命令行適配器,只有在不能安裝JavaHL并且Subclipse庫使用file:///協(xié)議時(shí)才可以使用。 大多數(shù)情況下都可以使用JavaSVN;只有需要時(shí)才選擇JavaHL或命令行適配器。參考資料小節(jié)中的鏈接可以幫助解決特定用例,如配置HTTP代理、SSL客戶端證書,等等。
連接到CodeShare上的SVN庫
現(xiàn)在就可以連接到Subversion庫了。對(duì)于dev2dev CodeShare上的項(xiàng)目,可以在訪問選項(xiàng)頁面中看到一個(gè)庫的URL,可以從Version控制項(xiàng)目菜單中找到該頁面。 這里是一個(gè)例子 。CodeShare SVN服務(wù)器要求用戶使用的用戶名和口令與其在dev2dev網(wǎng)站上所使用的相同。
圖6:連接到Subversion庫
如果連接參數(shù)設(shè)置正確,就可以看到一個(gè)SSL證書確認(rèn)對(duì)話框。
圖7:接受SSL證書
接受證書后,應(yīng)該就可以瀏覽庫并查看現(xiàn)有項(xiàng)目。
圖8:查看SVN庫中的現(xiàn)有項(xiàng)目
現(xiàn)在已經(jīng)準(zhǔn)備好,要開始使用Subversion和Subclipse插件了!
#p#
查看SVN中的現(xiàn)有項(xiàng)目
在SVN Repository視圖中可以看到,在許多CodeShare項(xiàng)目以及使用Subversion的其他項(xiàng)目中都可以看到一種共同的布局,通常如下所示:
https://xjms-ra.projects.dev2dev.bea.com/svn/xjms-ra
+-- branches
+-- www
+-- xjms-ra
+-- mqseries (work in progress)
+-- activemq
+-- tags
+-- xjms-ra
+-- 0.0.1 (stable versions or releases)
+-- 0.0.2
+-- trunk
+-- www (project web site)
+-- xjms-ra (project source)
trunk文件夾中包含主線開發(fā)源代碼;tags文件夾中包含穩(wěn)定版或發(fā)行版;branches文件夾中包含來自替代開發(fā)線上的代碼。在Subversion中,標(biāo)簽和分支僅僅是選中的源代碼快照的版本化副本。若想獲得更多詳細(xì)內(nèi)容,請(qǐng)參閱Subversion book。
可以在SVN Repository視圖中選擇當(dāng)前項(xiàng)目的主線或者特定的標(biāo)簽或分支,并從彈出菜單中選擇Check Out As...動(dòng)作。接著就會(huì)出現(xiàn)一個(gè)指導(dǎo)性的標(biāo)準(zhǔn)New Project Wizard,它允許用戶選擇項(xiàng)目類型(例如,Java或Simple Project)、項(xiàng)目名稱和位置,并在需要時(shí)配置Java build路徑。
為新的CodeShare項(xiàng)目配置SVN庫
版本控制庫是任何項(xiàng)目的基礎(chǔ)架構(gòu)的重要部分,對(duì)于開源項(xiàng)目(包括CodeShare上的項(xiàng)目)而言,它還在開發(fā)人員與其他社區(qū)成員之間的交流中起著重要作用。例如,它允許終端用戶為最新的代碼捐獻(xiàn)補(bǔ)丁,并為重要的修復(fù)提供早期更新機(jī)制。由于它的重要作用,為一個(gè)新項(xiàng)目配置SVN庫并從一開始就將所有的項(xiàng)目代碼置于版本控制之下就顯得非常重要了。
創(chuàng)建了新CodeShare項(xiàng)目之后,SVN庫就包含了trunk、tags和branches文件夾,以及trunk下的www模塊,它包含項(xiàng)目Web首頁的index.html文件。可以在SVN Repository視圖中驗(yàn)證這些,并使用該視圖中的彈出菜單上的動(dòng)作創(chuàng)建缺少的文件夾。
我們假設(shè)所有的源代碼、build腳本、文檔和其他項(xiàng)目資源被組織為一個(gè)Eclipse項(xiàng)目,那么就可以在Package Explorer或Navigator視圖中使用彈出菜單中的Team -> Share Project...動(dòng)作。Share Project Wizard會(huì)要求用戶選擇SVN庫類型,然后在下一個(gè)頁面中,可以選擇一個(gè)現(xiàn)有庫或配置一個(gè)新庫。
圖9:在Share Project Wizard中選擇SVN庫類型
在接下來的界面中指定模塊名。為了與CodeShare項(xiàng)目布局相匹配,我們應(yīng)該在trunk文件夾下創(chuàng)建模塊,因此,指定trunk/<project name>作為模塊名,比如trunk/xjms-ra。
圖10:指定模塊名
經(jīng)過確認(rèn)后,Subclipse會(huì)創(chuàng)建模塊,并將所有的項(xiàng)目文件導(dǎo)入SVN庫。
#p#
使用SVN庫
當(dāng)項(xiàng)目連接到SVN庫以后,在Package Explorer和Navigator視圖中會(huì)彈出一個(gè)Team菜單,顯示特定于Subversion的全部動(dòng)作??梢灾苯舆\(yùn)行Commit、Update、Add to svn:ignore,以及Version Control with Subversion一書中所描述的其他動(dòng)作。該書中的內(nèi)容也可以在Help -> Help Contents -> Version Control with Subversion下的Eclipse幫助系統(tǒng)中找到。
Subclipse插件還允許使用Eclipse的Team Synchronize視圖,它可以使用戶從庫中清楚地觀察到哪些項(xiàng)將要提交、哪些項(xiàng)已經(jīng)被其他開發(fā)人員更改并需要更新。從這個(gè)Synchronize視圖中還可以執(zhí)行大多數(shù)的SVN命令。
可以使用彈出的Team -> Synchronize with Repository菜單或位于主工具欄上的Synchronize...向?qū)О粹o將項(xiàng)目或工作集添加到Synchronize視圖中。如果看不到該按鈕,那么請(qǐng)將Team命令添加到當(dāng)前視圖中;可以使用Customize Perspective對(duì)話框添加,該對(duì)話框可從主工具欄上的彈出菜單中獲得(單擊任意空白處),然后,使用Window -> Save Perspective As...菜單以相同的名稱保存透視圖。
圖11:將命令組添加到當(dāng)前透視圖中
在工具欄下拉菜單中選擇Synchronize...動(dòng)作來啟動(dòng)向?qū)?。在第一個(gè)界面中,它又讓用戶選擇SVN版本跟蹤系統(tǒng),然后會(huì)顯示標(biāo)準(zhǔn)資源選擇面板,用戶可以選擇同步整個(gè)工作區(qū),也可以選擇某組項(xiàng)目或者一個(gè)指定的工作集。
圖12:同步工作區(qū)、工作集或選中的資源
一旦完成創(chuàng)建,Synchronize視圖就可以使用版本控制系統(tǒng)安排自動(dòng)刷新的時(shí)間??梢酝ㄟ^Synchronize視圖菜單中的Schedule...菜單對(duì)其進(jìn)行配置。這將有助于用戶保持最新狀態(tài),還可以看到其他開發(fā)人員所做的所有改動(dòng)。
圖13:安排自動(dòng)刷新的時(shí)間
由于Subclipse仍在發(fā)展,所以用戶可能會(huì)遇到bug或者無法找到真正希望獲得的一些特性。這帶我們進(jìn)入下一個(gè)話題。
#p#
修補(bǔ)Subclipse
當(dāng)在Subclipse中遇到問題時(shí),可以有多種選擇。如果是瑕疵問題,那么可以簡(jiǎn)單地選擇不使用該產(chǎn)品或等待下一個(gè)版本。還可以搜索問題跟蹤系統(tǒng)以及郵件列表檔案user@subclipse.tigris.org和dev@subclipse.tigris.org,有可能找到當(dāng)前問題的應(yīng)對(duì)措施或解釋。如果這樣沒有幫助,那么可以在郵件列表中咨詢此問題;如果有興趣試著自己解決,那么,下面的段落將簡(jiǎn)要介紹如何開始調(diào)試和修補(bǔ)Eclipse。但是,如果非常希望有所捐助,那么一種好的方法是訂閱dev@subclipse.tigris.org郵件列表,從而使您所做的努力與其他開發(fā)人員相協(xié)調(diào),根據(jù)項(xiàng)目路線圖調(diào)整您的想法。
庫路徑
|
Jar或Eclipse插件名
|
描述
|
trunk/svnClientAdapter
|
svnClientAdapter.jar
|
用于非Windows系統(tǒng),或者當(dāng)用戶需要構(gòu)建svnClientAdapter或JavaHL時(shí)
|
trunk/subclipse/core
|
org.tigris.subversion.subclipse.core
|
特定于Eclipse的插件后端
|
trunk/subclipse/javahl-win32
|
org.tigris.subversion.javahl.win32
|
為svnClientAdapter和JavaHL預(yù)構(gòu)建本地Windows二進(jìn)制文件
|
trunk/subclipse/ui
|
org.tigris.subversion.subclipse.ui
|
特定于Eclipse的UI
|
trunk/subclipse/feature-plugin
|
org.tigris.subversion.subclipse
|
介紹,無代碼
|
trunk/subclipse/feature
|
org.tigris.subversion.subclipse (feature)
|
Subclipse特性
|
trunk/subclipse/book
|
org.tigris.subversion.book
|
Eclipse幫助小節(jié),包括“Version Control with Subversion”這本書
|
trunk/subclipse/book-feature
|
org.tigris.subversion.book (feature)
|
“Version Control with Subversion”這本書的特寫
|
trunk/subclipse/update-site
|
-
|
Subclipse和“Version Control with Subversion”一書的特寫的更新站點(diǎn)
|
著手開始真的非常容易,即使您以前從沒有使用過Eclipse插件。需要將Subclipse項(xiàng)目放入Eclipse工作區(qū)中。Subclipse項(xiàng)目的Subversion庫位于http://subclipse.tigris.org/svn/subclipse/,可以使用以前安裝的Subclipse插件或者諸如命令行Subversion客戶端或TortoiseSVN之類的外部工具來查看代碼。還有一種非常好的辦法是在tigris.org Web站點(diǎn)上注冊(cè),并請(qǐng)求Subclipse項(xiàng)目的Observer角色。然后,就可以使用相同的用戶名連接到Subversion庫了(也可以用“guest”/“guest”進(jìn)行只讀訪問),還可以在問題跟蹤器(一個(gè)集成的Bugzilla庫)上發(fā)表評(píng)論,并附上對(duì)問題的補(bǔ)?。ㄈ绻械脑挘?/p>
一旦連接到版本控制庫,就需要在自己的工作區(qū)中檢查下述項(xiàng)目。對(duì)每一個(gè)模塊選擇Check Out As...,選擇一個(gè)位置和項(xiàng)目名(建議使用下表所列出的實(shí)際的插件名),并單擊Finish。
對(duì)于開發(fā)和測(cè)試,只需要org.tigris.subversion.subclipse.core, org.tigris.subversion.subclipse.ui以及org.tigris.subversion.javahl.win32或svnClientAdapter;其他的模塊僅在打包整個(gè)插件特性或構(gòu)建更新站點(diǎn)時(shí)需要。
當(dāng)所有的項(xiàng)目都在Eclipse工作區(qū)中之后,就可以試著運(yùn)行了。使用Run -> Run...菜單(或Debug,在調(diào)試器下運(yùn)行),啟動(dòng)新的Eclipse Application類型,并在Workspace Plug-Ins列表中選擇Subclipse插件。如果使用已安裝的Subclipse運(yùn)行IDE,那么應(yīng)該在External Plug-Ins列表中取消對(duì)Subclipse插件的選擇,但是要使其他插件均保持選中狀態(tài)。
圖14:運(yùn)行Eclipse應(yīng)用程序
單擊Run(或Debug),如果一切都配置正確,那么就會(huì)出現(xiàn)第二個(gè)Eclipse Workbench窗口;應(yīng)該可以打開Subclipse視圖,并像Eclipse本身的實(shí)例一樣連接到庫。此時(shí),如果是在調(diào)試器下運(yùn)行,就可以開始將斷點(diǎn)放到Subclipse類、或Subclipse所使用的Eclipse核心類中,調(diào)試器會(huì)停在這些斷點(diǎn)上。一個(gè)非常好的起點(diǎn)是org.tigris.subversion.subclipse.ui插件中的org.tigris.subversion.subclipse.ui.actions包,它包括菜單或工具欄中特定于Subclipse的UI動(dòng)作。注意,可以使用UI注冊(cè)這些動(dòng)作,可以在plugin.xml中聲明式地注冊(cè)(通常是action元素),或者是在Java代碼中編程式地注冊(cè),因此,這兩個(gè)地方都要查看。
#p#
假定已經(jīng)完成了最棘手的部分,并且已經(jīng)設(shè)法實(shí)現(xiàn)了更改,那么現(xiàn)在就該創(chuàng)建補(bǔ)丁并將其附在Subclipse 問題跟蹤庫中的原始問題上了。在創(chuàng)建補(bǔ)丁以前,請(qǐng)確保從版本控制庫中選擇最新的更改(如果有的話),并最后一次測(cè)試更改。如果一切都沒有問題,那么就使用Team -> Create Patch...菜單來啟動(dòng)向?qū)?。選擇Save To Clipboard或Save In File System,并指定是否需要對(duì)子目錄進(jìn)行循環(huán)掃描來查看更改。
圖15:創(chuàng)建補(bǔ)丁
創(chuàng)建了補(bǔ)丁之后,就可以將其發(fā)送至dev@subclipse.tigris.org郵件列表了,或者也可以在問題跟蹤器中創(chuàng)建問題并將其附上。
結(jié)束語
諸如Subclipse插件之類的Eclipse平臺(tái)開源擴(kuò)展可以提高開發(fā)人員的生產(chǎn)力,降低出錯(cuò)的可能性,并增強(qiáng)開發(fā)團(tuán)隊(duì)內(nèi)部的交流。本文演示了如何安裝、配置和使用Subclipse插件來從Eclipse IDE內(nèi)部與Subversion版本控制系統(tǒng)進(jìn)行交互。
以Subclipse插件為例,本文還演示了如何設(shè)置一個(gè)環(huán)境以進(jìn)行Eclipse插件開發(fā)、如何調(diào)試現(xiàn)有插件、如何創(chuàng)建補(bǔ)丁。事實(shí)上,任何Eclipse用戶都可以為該開源擴(kuò)展以及Eclipse平臺(tái)本身捐獻(xiàn)想法和補(bǔ)丁。
【編輯推薦】