ECLIPSE的SUBVERSION插件 - 張新傑的blog -- IT博客-中國最具人氣的IT博客-賽迪網IT人家園

導讀:


 


ECLIPSE的SUBVERSION插件




摘要
  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。

image4060620001.gif
圖1:使用Eclipse Update Manager安裝Subclipse
   掃描完更新後,您會看到一個可用特性的列表。我寫這篇文章時,Subclipse 0.9.33是最新的更新版本。

image4060620002.gif
圖2:選擇最新的Subclipse更新版本
   在接下來的界面中,會請求用戶接受許可證並選擇安裝位置。建議不要將新插件(包括Subclipse)安裝在默認的Eclipse安裝目錄下,最好將其放在一個外部擴展位置中。這會使手動卸載這些特性更加容易,如果需要的話;同時也使插件可以在多個版本的Eclipse安裝之間共享,比如發行版、嚐鮮(early access)穩定版(M1、M2等等)和集成IDE版本。

image4060620003.gif
圖3:選擇安裝位置
   此時,Update Manager已下載並安裝了所選特性,然後請求重啓Eclipse。
   一旦重啓Eclipse,用戶就會在Preference對話框中看到一個新的SVN區域,並且還會看到有關Subversion活動的其他視圖。可以使用Window -> Show View -> Other...菜單將這些視圖添加到Java Perspective中。

image4060620004.gif
圖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對話框的插件屬性中選擇下列適配器中的一種。

image4060620005.gif
圖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網站上所使用的相同。

image4060620006.gif
圖6:連接到Subversion庫
   如果連接參數設置正確,就可以看到一個SSL證書確認對話框。

image4060620007.gif
圖7:接受SSL證書
   接受證書後,應該就可以瀏覽庫並查看現有項目。

image4060620008.gif
圖8:查看SVN庫中的現有項目
   現在已經準備好,要開始使用Subversion和Subclipse插件了!
查看SVN中的現有項目
  在SVN Repository視圖中可以看到,在許多CodeShare項目以及使用Subversion的其他項目中都可以看到一種共同的佈局,通常如下所示:
[pre] 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)[/pre]  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庫類型,然後在下一個頁面中,可以選擇一個現有庫或配置一個新庫。

image4060620009.gif
圖9:在Share Project Wizard中選擇SVN庫類型
   在接下來的界面中指定模塊名。爲了與CodeShare項目佈局相匹配,我們應該在trunk文件夾下創建模塊,因此,指定trunk/作爲模塊名,比如trunk/xjms-ra。

image4060620010.gif
圖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...菜單以相同的名稱保存透視圖。

image4060620011.gif
圖11:將命令組添加到當前透視圖中
   在工具欄下拉菜單中選擇Synchronize...動作來啓動向導。在第一個界面中,它又讓用戶選擇SVN版本跟蹤系統,然後會顯示標準資源選擇面板,用戶可以選擇同步整個工作區,也可以選擇某組項目或者一個指定的工作集。

image4060620012.gif
圖12:同步工作區、工作集或選中的資源
   一旦完成創建,Synchronize視圖就可以使用版本控制系統安排自動刷新的時間。可以通過Synchronize視圖菜單中的Schedule...菜單對其進行配置。這將有助於用戶保持最新狀態,還可以看到其他開發人員所做的所有改動。

image4060620013.gif
圖13:安排自動刷新的時間
   由於Subclipse仍在發展,所以用戶可能會遇到bug或者無法找到真正希望獲得的一些特性。這帶我們進入下一個話題。
修補Subclipse
  當在Subclipse中遇到問題時,可以有多種選擇。如果是瑕疵問題,那麼可以簡單地選擇不使用該產品或等待下一個版本。還可以搜索問題跟蹤系統以及郵件列表檔案[url=mailto:[email protected]?subject=][email protected]和[url=mailto:[email protected]?subject=][email protected],有可能找到當前問題的應對措施或解釋。如果這樣沒有幫助,那麼可以在郵件列表中諮詢此問題;如果有興趣試着自己解決,那麼,下面的段落將簡要介紹如何開始調試和修補Eclipse。但是,如果非常希望有所捐助,那麼一種好的方法是訂閱[url=mailto:[email protected]?subject=][email protected]郵件列表,從而使您所做的努力與其他開發人員相協調,根據項目路線圖調整您的想法。
   着手開始真的非常容易,即使您以前從沒有使用過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。

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插件的選擇,但是要使其他插件均保持選中狀態。

image4060620014.gif
圖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,並指定是否需要對子目錄進行循環掃描來查看更改。

image4060620015.gif
圖15:創建補丁
   創建了補丁之後,就可以將其發送至[url=mailto:[email protected]][email protected]郵件列表了,或者也可以在問題跟蹤器中創建問題並將其附上。
結束語
  諸如Subclipse插件之類的Eclipse平臺開源擴展可以提高開發人員的生產力,降低出錯的可能性,並增強開發團隊內部的交流。本文演示瞭如何安裝、配置和使用Subclipse插件來從Eclipse IDE內部與Subversion版本控制系統進行交互。
  以Subclipse插件爲例,本文還演示瞭如何設置一個環境以進行Eclipse插件開發、如何調試現有插件、如何創建補丁。事實上,任何Eclipse用戶都可以爲該開源擴展以及Eclipse平臺本身捐獻想法和補丁。


補充鎖定原因和解決:
在eclipse裏提交和更新文件是抱錯。

Attempted to lock an already-locked dir
svn: Working copy 'F:/workspace/WebFrame/WebRoot/attach/prodrelation' locked

執行“清除”操作後,問題解決了。
但還是沒搞懂是什麼原因造成的。



本文轉自
http://zhangxinjie.blog.ccidnet.com/blog-htm-itemid-204797-type-blog-do-showone-uid-20630.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章