文章目錄
- 摘要
- 安裝Subclipse
- 在Subclipse中配置SVN介面
- 串連到CodeShare上的SVN庫
- 查看SVN中的現有項目
- 為新的CodeShare項目配置SVN庫
- 使用SVN庫
- 修補Subclipse
- 結束語
- 參考資料
摘要
Subversion (SVN)是一個版本控制系統,是CVS的極具競爭力的替代品。它支援CVS所缺少的一些重要特性,比如版本化的重新命名、目錄和中繼資料;還支援原子提交和通過HTTP/HTTPS的遠端存取。許多開源項目使用Subversion作為版本控制系統,其中包括BEA的dev2dev CodeShare 網站上的項目。 有一個簡短的指南介紹了如何為CodeShare建立支援Windows的命令列SVN用戶端和Tortiose SVN。然而,使用自己的IDE中的Subversion庫才有意義。
本文描述如何在Eclipse IDE中使用Subversion,具體來說,介紹了Subclipse外掛程式的安裝和使用。順著這個思路,我還將展示如何使用產生的配置來修改或擴充Subclipse外掛程式本身。
安裝Subclipse
安裝Subclipse的最好方法是使用Eclipse Update Manager。在Eclipse 3.1中,它位於Help -> Software Updates -> Find and Install...菜單下。請選擇Search,尋找要安裝的新特性,並以http://subclipse.tigris.org/update作為URL添加New Remote Site。
圖1:使用Eclipse Update Manager安裝Subclipse
掃描完更新後,您會看到一個可用特性的列表。我寫這篇文章時,Subclipse 0.9.33是最新的更新版本。
圖2:選擇最新的Subclipse更新版本
在接下來的介面中,會請求使用者接受許可證並選擇安裝位置。建議不要將新外掛程式(包括Subclipse)安裝在預設的Eclipse安裝目錄下,最好將其放在一個外部擴充位置中。這會使手動卸載這些特性更加容易,如果需要的話;同時也使外掛程式可以在多個版本的Eclipse安裝之間共用,比如發行版、嘗鮮(early access)穩定版(M1、M2等等)和整合IDE版本。
圖3:選擇安裝位置
此時,Update Manager已下載並安裝了所選特性,然後請求重啟Eclipse。
一旦重啟Eclipse,使用者就會在Preference對話方塊中看到一個新的SVN地區,並且還會看到有關Subversion活動的其他視圖。可以使用Window -> Show View -> Other...菜單將這些視圖添加到Java Perspective中。
圖4:添加關於Subversion活動的視圖
我通常將SVN Repository視圖添加到Quick Views中,而將SVN Resource History添加到位於Java Perspective工作區底部的一個標籤組中。這樣,在開發過程中,這兩個視圖就近便可用了,同時也便於利用拖放來運行某些任務,比如“獲得資源曆史”(從諸如Navigator、Package Explorer、SVN Repository和Synchronize之類的面向資源的視圖到SVN Resource History視圖)。
在Subclipse中配置SVN介面
可以配置Subversion伺服器來使用下列協議之一:
- SVN協議,一種輕量級的有狀態協議,由獨立的Subversion伺服器(svnserve)所使用。安全版本svn+ssh使用基於ssh的隧道。
- http協議,基於WebDAV擴充,通常被作為模組部署在Apache HTTP伺服器上。安全版本使用https,dev2dev CodeShare上的Subclipse安裝使用的就是該協議。
- file協議,用於訪問本地可用的Subversion庫(例如,共用磁碟機上的Subversion庫),它是最少選擇的庫。
Subclipse使用專門的適配器抽象化來利用上述協議。可以在Window -> Preferences -> Team -> SVN對話方塊的外掛程式屬性中選擇下列適配器中的一種。
圖5:選擇適配器
每一種適配器都有其自身的優點:
- JavaSVN是惟一完全基於Java的Subclipse用戶端,是預設支援的。注意,JavaSVN不支援file:///協議。
- JavaHL是封裝本地Subclipse API的瘦封裝器。該適配器是為Win32平台預構建的,但是在其他所有的平台上必須手動構建(除非Unix發行版中包含它)。
- 命令列適配器,只有在不能安裝JavaHL並且Subclipse庫使用file:///協議時才可以使用。
大多數情況下都可以使用JavaSVN;只有需要時才選擇JavaHL或命令列適配器。參考資料小節中的連結可以協助解決特定用例,如配置HTTP代理、SSL用戶端認證,等等。
串連到CodeShare上的SVN庫
現在就可以串連到Subversion庫了。對於dev2dev CodeShare上的項目,可以在訪問選項頁面中看到一個庫的URL,可以從Version控制項目菜單中找到該頁面。 這裡是一個例子 。CodeShare SVN伺服器要求使用者使用的使用者名稱和口令與其在dev2dev網站上所使用的相同。
圖6:串連到Subversion庫
如果串連參數設定正確,就可以看到一個SSL認證確認對話方塊。
圖7:接受SSL認證
接受認證後,應該就可以瀏覽庫並查看現有項目。
圖8:查看SVN庫中的現有項目
現在已經準備好,要開始使用Subversion和Subclipse外掛程式了!
查看SVN中的現有項目
在SVN Repository視圖中可以看到,在許多CodeShare項目以及使用Subversion的其他項目中都可以看到一種共同的布局,通常如下所示:
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檔案夾中包含主線開發原始碼;tags檔案夾中包含穩定版或發行版;branches檔案夾中包含來自替代開發線上的代碼。在Subversion中,標籤和分支僅僅是選中的原始碼快照的版本化副本。若想獲得更多詳細內容,請參閱Subversion book。
可以在SVN Repository視圖中選擇當前項目的主線或者特定的標籤或分支,並從快顯功能表中選擇Check Out As...動作。接著就會出現一個指導性的標準New Project Wizard,它允許使用者選擇項目類型(例如,Java或Simple Project)、項目名稱和位置,並在需要時配置Java build路徑。
為新的CodeShare項目配置SVN庫
版本控制庫是任何項目的基礎架構的重要部分,對於開源項目(包括CodeShare上的項目)而言,它還在開發人員與其他社區成員之間的交流中起著重要作用。例如,它允許終端使用者為最新的代碼捐獻補丁,並為重要的修複提供早期升級機制。由於它的重要作用,為一個新項目配置SVN庫並從一開始就將所有的項目代碼置於版本控制之下就顯得非常重要了。
建立了新CodeShare項目之後,SVN庫就包含了trunk、tags和branches檔案夾,以及trunk下的www模組,它包含項目Web首頁的index.html檔案。可以在SVN Repository視圖中驗證這些,並使用該視圖中的快顯功能表上的動作建立缺少的檔案夾。
我們假設所有的原始碼、build指令碼、文檔和其他項目資源被組織為一個Eclipse項目,那麼就可以在Package Explorer或Navigator視圖中使用快顯功能表中的Team -> Share Project...動作。Share Project Wizard會要求使用者選擇SVN庫類型,然後在下一個頁面中,可以選擇一個現有庫或配置一個新庫。
圖9:在Share Project Wizard中選擇SVN庫類型
在接下來的介面中指定模組名。為了與CodeShare項目布局相匹配,我們應該在trunk檔案夾下建立模組,因此,指定trunk/<project name>作為模組名,比如trunk/xjms-ra。
圖10:指定模組名
經過確認後,Subclipse會建立模組,並將所有的專案檔匯入SVN庫。
使用SVN庫
當項目串連到SVN庫以後,在Package Explorer和Navigator視圖中會彈出一個Team菜單,顯示特定於Subversion的全部動作。可以直接運行Commit、Update、Add to svn:ignore,以及Version Control with Subversion一書中所描述的其他動作。該書中的內容也可以在Help -> Help Contents -> Version Control with Subversion下的Eclipse協助系統中找到。
Subclipse外掛程式還允許使用Eclipse的Team Synchronize視圖,它可以使使用者從庫中清楚地觀察到哪些項將要提交、哪些項已經被其他開發人員更改並需要更新。從這個Synchronize視圖中還可以執行大多數的SVN命令。
可以使用彈出的Team -> Synchronize with Repository菜單或位於主工具列上的Synchronize...嚮導按鈕將項目或工作集添加到Synchronize視圖中。如果看不到該按鈕,那麼請將Team命令添加到當前視圖中;可以使用Customize Perspective對話方塊添加,該對話方塊可從主工具列上的快顯功能表中獲得(單擊任意空白處),然後,使用Window -> Save Perspective As...菜單以相同的名稱儲存透視圖。
圖11:將命令組添加到當前透視圖中
在工具列下拉式功能表中選擇Synchronize...動作來啟動嚮導。在第一個介面中,它又讓使用者選擇SVN版本跟蹤系統,然後會顯示標準資源選擇面板,使用者可以選擇同步整個工作區,也可以選擇某組項目或者一個指定的工作集。
圖12:同步工作區、工作集或選中的資源
一旦完成建立,Synchronize視圖就可以使用版本控制系統安排自動重新整理的時間。可以通過Synchronize視圖菜單中的Schedule...菜單對其進行配置。這將有助於使用者保持最新狀態,還可以看到其他開發人員所做的所有改動。
圖13:安排自動重新整理的時間
由於Subclipse仍在發展,所以使用者可能會遇到bug或者無法找到真正希望獲得的一些特性。這帶我們進入下一個話題。
修補Subclipse
當在Subclipse中遇到問題時,可以有多種選擇。如果是瑕疵問題,那麼可以簡單地選擇不使用該產品或等待下一個版本。還可以搜尋問題跟蹤系統以及郵件清單檔案mailto:user@subclipse.tigris.org?subject=和mailto:dev@subclipse.tigris.org?subject=,有可能找到當前問題的應對措施或解釋。如果這樣沒有協助,那麼可以在郵件清單中諮詢此問題;如果有興趣試著自己解決,那麼,下面的段落將簡要介紹如何開始調試和修補Eclipse。但是,如果非常希望有所捐助,那麼一種好的方法是訂閱mailto:dev@subclipse.tigris.org?subject=郵件清單,從而使您所做的努力與其他開發人員相協調,根據項目路線圖調整您的想法。
著手開始真的非常容易,即使您以前從沒有使用過Eclipse外掛程式。需要將Subclipse項目放入Eclipse工作區中。Subclipse項目的Subversion庫位於http://subclipse.tigris.org/svn/subclipse/,可以使用以前安裝的Subclipse外掛程式或者諸如命令列Subversion用戶端或TortoiseSVN之類的外部工具來查看代碼。還有一種非常好的辦法是在tigris.org Web網站上註冊,並請求Subclipse項目的Observer角色。然後,就可以使用相同的使用者名稱串連到Subversion庫了(也可以用“guest”/“guest”進行唯讀訪問),還可以在問題跟蹤器(一個整合的Bugzilla庫)上發表評論,並附上對問題的補丁(如果有的話)。
一旦串連到版本控制庫,就需要在自己的工作區中檢查下述項目。對每一個模組選擇Check Out As...,選擇一個位置和項目名(建議使用下表所列出的實際的外掛程式名),並單擊Finish。
庫路徑 |
Jar或Eclipse外掛程式名 |
描述 |
trunk/svnClientAdapter |
svnClientAdapter.jar |
用於非Windows系統,或者當使用者需要構建svnClientAdapter或JavaHL時 |
trunk/subclipse/core |
org.tigris.subversion.subclipse.core |
特定於Eclipse的外掛程式後端 |
trunk/subclipse/javahl-win32 |
org.tigris.subversion.javahl.win32 |
為svnClientAdapter和JavaHL預構建本地Windows二進位檔案 |
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協助小節,包括“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”一書的特寫的更新網站 |
對於開發與測試,只需要org.tigris.subversion.subclipse.core, org.tigris.subversion.subclipse.ui以及org.tigris.subversion.javahl.win32或svnClientAdapter;其他的模組僅在打包整個外掛程式特性或構建更新網站時需要。
當所有的項目都在Eclipse工作區中之後,就可以試著運行了。使用Run -> Run...菜單(或Debug,在調試器下運行),啟動新的Eclipse Application類型,並在Workspace Plug-Ins列表中選擇Subclipse外掛程式。如果使用已安裝的Subclipse運行IDE,那麼應該在External Plug-Ins列表中取消對Subclipse外掛程式的選擇,但是要使其他外掛程式均保持選中狀態。
圖14:運行Eclipse應用程式
單擊Run(或Debug),如果一切都配置正確,那麼就會出現第二個Eclipse Workbench視窗;應該可以開啟Subclipse視圖,並像Eclipse本身的執行個體一樣串連到庫。此時,如果是在調試器下運行,就可以開始將斷點放到Subclipse類、或Subclipse所使用的Eclipse核心類中,調試器會停在這些斷點上。一個非常好的起點是org.tigris.subversion.subclipse.ui外掛程式中的org.tigris.subversion.subclipse.ui.actions包,它包括菜單或工具列中特定於Subclipse的UI動作。注意,可以使用UI註冊這些動作,可以在plugin.xml中聲明式地註冊(通常是action元素),或者是在Java代碼中編程式地註冊,因此,這兩個地方都要查看。
假定已經完成了最棘手的部分,並且已經設法實現了更改,那麼現在就該建立補丁並將其附在Subclipse 問題跟蹤庫中的原始問題上了。在建立補丁以前,請確保從版本控制庫中選擇最新的更改(如果有的話),並最後一次測試更改。如果一切都沒有問題,那麼就使用Team -> Create Patch...菜單來啟動嚮導。選擇Save To Clipboard或Save In File System,並指定是否需要對子目錄進行迴圈掃描來查看更改。
圖15:建立補丁
建立了補丁之後,就可以將其發送至dev@subclipse.tigris.org郵件清單了,或者也可以在問題跟蹤器中建立問題並將其附上。
結束語
諸如Subclipse外掛程式之類的Eclipse平台開源擴充可以提高開發人員的生產力,降低出錯的可能性,並增強Team Dev內部的交流。本文示範了如何安裝、配置和使用Subclipse外掛程式來從Eclipse IDE內部與Subversion版本控制系統進行互動。
以Subclipse外掛程式為例,本文還示範了如何設定一個環境以進行Eclipse外掛程式開發、如何調試現有外掛程式、如何建立補丁。事實上,任何Eclipse使用者都可以為該開源擴充以及Eclipse平台本身捐獻想法和補丁。
參考資料
- Subversion——Subversion首頁
- Version Control with Subversion——一本非常不錯的Subversion方面的書
- Subclipse - Subversion Plug-in for Eclipse IDE
- JavaHL for Mac OS X
- Building JavaHL from sources
- Configuring an HTTP proxy connection for JavaHL and command-line adapters
- Configuring an HTTP proxy connection for JavaSVN
- Configuring SSL client certificates
- Configuring an svn+ssh:// connection for JavaHL and command-line adapter on Unix
- Configuring an svn+ssh:// connection for JavaHL and command-line adapter on Windows
- Configuring an svn+ssh:// connection for JavaSVN adapter
- Subclipse FAQ
- dev2dev Eclipse Technology Center
原文出處:http://dev2dev.bea.com/pub/a/2005/11/subclipse.html
作者簡介 |
|
Eugene Kuleshov 是一位獨立顧問。他在軟體設計和開發方面具有超過12年的經驗,擅長於應用程式安全、企業整合(EAI)和面向訊息的中介軟體。他的客戶包括大型的金融和保險公司。 |