經驗總結;Eclipse下Subversion插件的使用之一
本文描述如何在EclipseIDE中使用Subversion,具體來說,介紹了Subclipse插件的安裝和使用。順著這個思路,我還將展示如何使用產生的配置來修改或擴展Subclipse插件本身。
Subversion(SVN)是一個版本控制系統,是CVS的極具競爭力的替代品。它支持CVS所缺少的一些重要特性,比如版本化的重命名、目錄和元數據;還支持原子提交和通過HTTP/HTTPS的遠程訪問。許多開源項目使用Subversion作為版本控制系統,其中包括BEA的dev2devCodeShare站點上的項目。有一個簡短的指南介紹了如何為CodeShare建立支持Windows的命令行SVN客戶端和TortioseSVN。然而,使用自己的IDE中的Subversion庫才有意義。
安裝Subclipse
安裝Subclipse的最好方法是使用EclipseUpdateManager。在Eclipse3.1中,它位于Help->SoftwareUpdates->FindandInstall…菜單下。請選擇Search,查找要安裝的新特性,并以http://subclipse.tigris.org/update作為URL添加NewRemoteSite。
1:使用EclipseUpdateManager安裝Subclipse插件
掃描完更新后,您會看到一個可用特性的列表。我寫這篇文章時,Subclipse0.9.33是最新的更新版本。
2:選擇最新的Subclipse更新版本
在接下來的界面中,會請求用戶接受許可證并選擇安裝位置。建議不要將新插件(包括Subclipse)安裝在默認的Eclipse安裝目錄下,最好將其放在一個外部擴展位置中。這會使手動卸載這些特性更加容易,如果需要的話;同時也使插件可以在多個版本的Eclipse安裝之間共享,比如發行版、嘗鮮(earlyaccess)穩定版(M1、M2等等)和集成IDE版本。
3:選擇安裝位置
此時,UpdateManager已下載并安裝了所選特性,然后請求重啟Eclipse。
一旦重啟Eclipse,用戶就會在Preference對話框中看到一個新的SVN區域,并且還會看到有關Subversion活動的其他視圖??梢允褂肳indow->ShowView->Other…菜單將這些視圖添加到JavaPerspective中。
4:添加關于Subversion活動的視圖
我通常將SVNRepository視圖添加到QuickViews中,而將SVNResourceHistory添加到位于JavaPerspective工作區底部的一個標簽組中。這樣,在開發過程中,這兩個視圖就近便可用了,同時也便于利用拖放來運行某些任務,比如“獲得資源歷史”(從諸如Navigator、PackageExplorer、SVNRepository和Synchronize之類的面向資源的視圖到SVNResourceHistory視圖)。
在Subclipse中配置SVN接口
可以配置Subversion服務器來使用下列協議之一:
SVN協議,一種輕量級的有狀態協議,由獨立的Subversion服務器(svnserve)所使用。安全版本svn+ssh使用基于ssh的隧道。
http協議,基于WebDAV擴展,通常被作為模塊部署在ApacheHTTP服務器上。安全版本使用https,dev2devCodeShare上的Subclipse安裝使用的就是該協議。
file協議,用于訪問本地可用的Subversion庫(例如,共享驅動器上的Subversion庫),它是最少選擇的庫。
Subclipse使用專門的適配器抽象化來利用上述協議。可以在Window->Preferences->Team->SVN對話框的插件屬性中選擇下列適配器中的一種。
5:選擇適配器
每一種適配器都有其自身的優點:JavaSVN是惟一完全基于Java的Subclipse客戶端,是默認支持的。注意,JavaSVN不支持file:///協議。JavaHL是包裝本地SubclipseAPI的瘦包裝器。該適配器是為Win32平臺預構建的,但是在其他所有的平臺上必須手動構建(除非Unix發行版中包含它)。
命令行適配器,只有在不能安裝JavaHL并且Subclipse庫使用file:///協議時才可以使用。
大多數情況下都可以使用JavaSVN;只有需要時才選擇JavaHL或命令行適配器。參考資料小節中的鏈接可以幫助解決特定用例,如配置HTTP代理、SSL客戶端證書,等等。
連接到CodeShare上的SVN庫
現在就可以連接到Subversion庫了。對于dev2devCodeShare上的項目,可以在訪問選項頁面中看到一個庫的URL,可以從Version控制項目菜單中找到該頁面。這里是一個例子。CodeShareSVN服務器要求用戶使用的用戶名和口令與其在dev2dev網站上所使用的相同。
6:連接到Subversion庫
如果連接參數設置正確,就可以看到一個SSL證書確認對話框。
7:接受SSL證書
接受證書后,應該就可以瀏覽庫并查看現有項目。
8:查看SVN庫中的現有項目
現在已經準備好,要開始使用Subversion和Subclipse插件了!
查看SVN中的現有項目
在SVNRepository視圖中可以看到,在許多CodeShare項目以及使用Subversion的其他項目中都可以看到一種共同的布局,通常如下所示:
https://xjms-ra.projects.dev2dev.bea.com/svn/xjms-ra
+–branches
+–www
+–xjms-ra
+–mqseries(workinprogress)
+–activemq
+–tags
+–xjms-ra
+–0.0.1(stableversionsorreleases)
+–0.0.2
+–trunk
+–www(projectwebsite)
+–xjms-ra(projectsource)
trunk文件夾中包含主線開發源代碼;tags文件夾中包含穩定版或發行版;branches文件夾中包含來自替代開發線上的代碼。在Subversion中,標簽和分支僅僅是選中的源代碼快照的版本化副本。若想獲得更多詳細內容,請參閱Subversionbook。
可以在SVNRepository視圖中選擇當前項目的主線或者特定的標簽或分支,并從彈出菜單中選擇CheckOutAs…動作。接著就會出現一個指導性的標準NewProjectWizard,它允許用戶選擇項目類型(例如,Java或SimpleProject)、項目名稱和位置,并在需要時配置Javabuild路徑。
為新的CodeShare項目配置SVN庫
版本控制庫是任何項目的基礎架構的重要部分,對于開源項目(包括CodeShare上的項目)而言,它還在開發人員與其他社區成員之間的交流中起著重要作用。例如,它允許終端用戶為最新的代碼捐獻補丁,并為重要的修復提供早期更新機制。由于它的重要作用,為一個新項目配置SVN庫并從一開始就將所有的項目代碼置于版本控制之下就顯得非常重要了。
創建了新CodeShare項目之后,SVN庫就包含了trunk、tags和branches文件夾,以及trunk下的www模塊,它包含項目Web首頁的index.html文件??梢栽赟VNRepository視圖中驗證這些,并使用該視圖中的彈出菜單上的動作創建缺少的文件夾。
我們假設所有的源代碼、build腳本、文檔和其他項目資源被組織為一個Eclipse項目,那么就可以在PackageExplorer或Navigator視圖中使用彈出菜單中的Team->ShareProject…動作。ShareProjectWizard會要求用戶選擇SVN庫類型,然后在下一個頁面中,可以選擇一個現有庫或配置一個新庫。
9:在ShareProjectWizard中選擇SVN庫類型
在接下來的界面中指定模塊名。為了與CodeShare項目布局相匹配,我們應該在trunk文件夾下創建模塊,因此,指定trunk/
10:指定模塊名
經過確認后,Subclipse會創建模塊,并將所有的項目文件導入SVN庫。
使用SVN庫
當項目連接到SVN庫以后,在PackageExplorer和Navigator視圖中會彈出一個Team菜單,顯示特定于Subversion的全部動作??梢灾苯舆\行Commit、Update、Addtosvn:ignore,以及VersionControlwithSubversion一書中所描述的其他動作。該書中 的內容也可以在Help->HelpContents->VersionControlwithSubversion下的Eclipse幫助系統中找到。
Subclipse插件還允許使用Eclipse的TeamSynchronize視圖,它可以使用戶從庫中清楚地觀察到哪些項將要提交、哪些項已經被其他開發人員更改并需要更新。從這個Synchronize視圖中還可以執行大多數的SVN命令。
可以使用彈出的Team->SynchronizewithRepository菜單或位于主工具欄上的Synchronize…向導按鈕將項目或工作集添加到Synchronize視圖中。如果看不到該按鈕,那么請將Team命令添加到當前視圖中;可以使用CustomizePerspective對話框添加,該對話框可從主工具欄上的彈出菜單中獲得(單擊任意空白處),然后,使用Window->SavePerspectiveAs…菜單以相同的名稱保存透視圖。
【編輯推薦】