原有的 Eclipse 安裝已集成了對 CVS(一種流行的開放源碼變更管理系統)的支持。CVS 的功能及其局限性眾所周知,但是許多小組一直在研究其他版本控制的系統,以便提供更好的伸縮性、對合並變更和分支版本的更好支持以及對二進制文件格式的更好支持。
Subversion(SVN)是最受歡迎的 CVS 替代品,它提供了更好的性能(允許智能本地緩存和數據庫後端)、輕松而又快速的分支(branching)以及對使用 CVS 時常見的所有問題的應答。
繼續閱讀本文,了解如何向 Eclipse 添加 Subversion 支持,以及如何通過 IDE 執行基本的版本控制活動。
開始之前
為順利學習本文內容,您需要下載並安裝 Eclipse。為您的平台下載 Eclipse SDK 包將為您提供基本的 Eclipse IDE(也稱為 Eclipse Platform)和 Java™ Development Kit。如果您計劃使用 C/C++ (我正打算這麼做),請訪問 C Development Tooling(CDT)Web 站點並使用更新管理器安裝 CDT(下一節將介紹如何使用更新管理器)。
您還需要訪問 Subversion 存儲庫。如果需要建立一個 Subversion 存儲庫,可在 Subversion 的 Web 站點中找到一些出色的參考資料。出於演示目的,我將向您展示如何檢出 Subclipse 項目,並在局域網上使用存儲庫中的項目。
將 Subclipse 添加到 Eclipse
Subclipse 是一個為 Eclipse IDE 添加 Subversion 支持的項目。我們將使用 Eclipse 的更新管理器將 Subclipse 添加到 Eclipse IDE。在 Eclipse 中的 “Help” 菜單中選擇 Software Updates > Find and Install 打開更新管理器。
圖 1. Eclipse 更新管理器
除了使用這個更新管理器查找軟件更新外,我們還可以使用該更新管理器查找並安裝新特性,如 Subclipse。務必選中 Search for new features to install,然後單擊 Next 以繼續。Eclipse 會顯示更新管理器的下一個面板。
圖 2. 更新管理器站點
由於我們需要的是特定特性,所以取消選中現有站點,然後單擊 New Remote Site,顯示 New Update Site 對話框(參見圖 3)。我們將使用此對話框將 Subclipse 更新站點添加到列表。
圖 3. 添加新的更新站點
在 Name 中輸入您需要的內容(Subclipse 是最佳選擇),並輸入以下 URL:http://subclipse.tigris.org/update_1.0.x(當前 Subclipse 更新站點)。單擊 OK 將 Subclipse 更新站點添加到更新管理器的列表中。
在更新管理器窗口中,單擊 Finish,開始搜索新特性。在本例中,我們需要的新特性是 Subclipse。片刻之後,更新管理器的搜索完成,並顯示搜索結果。
圖 4. 可以安裝的新特性
選中 Subclipse(您可以單擊提示三角符號來查看此特性的詳細內容),然後單擊 Next 查看該特性的許可條款。接受條款,然後單擊 Next 檢查您選擇安裝的特性。單擊 Finish 下載並安裝 Subclipse。
更新管理器下載 Subversion 組件。在安裝任何內容之前,Eclipse 都將通知您該特性沒有數字簽名(圖 5)。這是您取消安裝的最後一次機會。單擊 Install All 繼續安裝。
圖 5. Subclipse 沒有數字簽名
安裝 Subversion 後,Eclipse 會立即通知您可能需要重新啟動 IDE 才能激活新特性(參見圖 6)。周全起見,重新啟動 Eclipse。
圖 6. 安裝新特性後重新啟動 Eclipse
備份 Eclipse 後,才能安裝並順利使用 Subclipse。
如果在 Mac OS X 或 Linux® 上運行 Eclipse,您可能需要安裝 JavaHL 庫,在 Subclipse FAQ 中的 Troubleshooting 部分對該庫進行了描述。在繼續嘗試使用 Subclipse 之前,請做好這些准備工作。
快速測試
完成安裝之後,測試新特性總是令人愉快;我們將從 Subversion 存儲庫檢出 Subclipse 的副本,以確保其安裝正確。
在 Eclipse 的 File 菜單中選擇 Import 打開導入管理器(參見圖 7)。選擇 Checkout Projects from SVN,然後單擊 Next。
圖 7. 導入管理器
在 Select/Create Location 面板中(參見圖 8),我們需要創建一個新位置(因為尚未進行任何配置),因而單擊 Next 繼續。若 Next 按鈕禁用,請切換到 Use existing repository location 選項,然後返回到 Create a new repository location 以啟用 Next 按鈕。
圖 8. 創建新的存儲庫位置
在接下來的部分(參見圖 9)中,將存儲庫 URL(http://subclipse.tigris.org/svn/subclipse/)添寫到 Url 字段中,然後單擊 Next。片刻之後,Eclipse 提示您輸入用戶 ID 和口令。如果您在 Subclipse 站點上沒有賬號,請輸入 guest 作為用戶 ID,並輸入空格作為口令,選中 Save Password 框,並單擊 OK。
圖 9. 添加存儲庫 URL
Eclipse 會顯示 Subclipse 存儲庫中的文件夾(參見圖 10)。展開 trunk 選中 subclipse 文件夾,然後單擊 Finish 即可檢出您自已的 Subclipse 項目的源代碼副本。由於您對此沒有任何概念,所以在 New Project 向導提示您時,請選擇 Simple > Project。
圖 10. Subclipse 存儲庫
基本的 Subversion 操作
至此,我們已成功地安裝了 Subclipse,並在 Eclipse 設置中添加了對 Subversion 服務器的支持,通過從存儲庫下載最新的 Subclipse 源代碼,我們對 Subclipse 進行了測試。現在該考慮使用我們自已的代碼和 Subversion 存儲庫來做些事情了。
向您展示如何使用 Subversion 之前,先簡單介紹一下我的存儲庫。它駐留在稱為 dogma 的機器上,端口為 8000,我為與我的 developerWorks 文章相關的代碼新建了一個 developerworks 存儲庫。我將項目直接放置在存儲庫的根目錄中。其他存儲庫的根目錄下通常會有 trunk、tags 和 branches 文件夾,分別用於存放開發版本、標簽和分支。但我不希望為 developerWorks 文章中代碼的標簽和分支操作而煩心。
我已經添加了兩個項目,即 forkWork 和 threadWork,這兩個項目來自我的第一篇 developerWorks 文章。我的 Eclipse 工作區(參見圖 11)還包含三個來自 developerWorks 文章的其他項目(getopt_demo、getopt_long_demo 和 readdir_demo)。
圖 11. 我的 Eclipse C/C++ 項目
現在,我們做好了一切准備,可以開始工作。
將項目添加到存儲庫
要將新的項目添加到 Subversion 存儲庫,請右擊該項目(可以在任何 Eclipse 的項目視圖或 Navigator 視圖),並且從菜單中選擇 Team > Share Project。Eclipse 會顯示 Share Project 對話框。
圖 12. Share Project 對話框
從 Eclipse 當前支持的存儲庫列表中選擇 SVN,然後單擊 Next。接下來的對話框(參見圖 13)讓您選擇現有存儲庫位置,或者創建一個新位置。
圖 13. 選擇存儲庫位置
如果您的存儲庫已列出(如您所見,我已經添加了自已的庫),選中它,並單擊 Finish。如果您的存儲庫未列出,請添加它,並繼續。Eclipse 將在存儲庫中創建新目錄,其名稱與項目相同,並顯示項目中的所有文件和文件夾的列表。
圖 14. 添加項目的內容
在頂部的字段中輸入適當的內容來描述此項目,然後單擊 Select All 選中該項目的所有文件。單擊 OK 以檢入項目,並將其當前狀態傳遞給 Subversion 存儲庫。
Subversion 的命令和輸出結果顯示在 Console 視圖中,通常位於 Eclipse 窗口的底部(如果您查看 Subclipse 究竟對項目執行了什麼操作)。
更新項目
版本控制系統的重要特性之一是其他開發人員能夠隨時繼續開發,並在准備好時提交其變更。要下載這些變更,並將其與本地副本集成,您需要更新項目。
右擊您要更新的項目,然後從菜單中選擇 Team > Update。Eclipse 將從存儲庫中檢索任何變更,並嘗試將它們與本地副本合並。
添加文件或目錄
如果將文件添加到項目中(參見圖 15),它不會自動成為版本控制的一部分 —— 您需要明確將其添加到特定的存儲庫中。在下面的屏幕快照中,您可以看到,我已經將 ReadMe.txt 文件添加到了 threadWork 項目中。
圖 15. 添加新文件
右擊新文件,然後選擇 Team > Add to Version Control。就是這樣!下一次將此項目中的變更提交給存儲庫時,新文件也會檢入。
刪除文件或目錄
如果將文件添加到了與項目不在相關的存儲庫中,您可以輕松地刪除它。右擊文件,然後選擇 Delete。不需要使用 Team 菜單,Subclipse 自動將標記要刪除的文件,並將它從項目中移除。下一次將變更提交給存儲庫時,該文件被刪除了。
重命名文件或目錄
要重命名 Subclipse 控制的文件或目錄,請右擊它,然後選擇 Rename。在輸入字段中鍵入項的新名稱,按 Enter 鍵。文件是在項目中重命名的,重命名操作(通過 Add 操作添加新名稱、通過 Delete 操作刪除舊名稱)排隊等待您下一次提交。在圖 16 中,您可以看到將 main.c 重命名為 threadWork.c 之後、提交更改之前的 threadWork 項目。注意,Subclipse 為 “新” 文件添加的藍色小加號表示該文件被安排在下一次提交時添加。
圖 16. 重命名文件是原子操作,盡管它包含一個 add 操作和一個 delete 操作
忽略文件
如果項目生成文件,或者包括您不想檢入的 Subversion 存儲庫文件,則可以通知 Subclipse 忽略它們。右擊您要在版本控制中排除的文件或目錄,然後選擇 Team > Add to svn:ignore 即可顯示Add to svn:ignore 對話框。
圖 17. 忽略不納入版本控制的資源
單擊 OK 將這個特定的文件添加到項目目錄的 svn:ignore 屬性中。選擇 Wildcard extension 忽略具有當前文件擴展名的所有文件,或選擇 Custom pattern 在忽略列表中添加您自己的通配符。下一次提交變更時,對忽略列表的這些更改將添加到存儲庫中。
提交更改
如果您對項目的變更感到滿意,確定了您的代碼可以編譯,並且已經對變更進行測試,則應將它們提交給 Subversion 存儲庫。在您的工作站崩潰時,它可以作為一個備份,並允許其他開發人員更新其本地副本以包含您的變更。
在嘗試提交變更之前,請確保更新您的項目(參閱 “更新項目”)。右擊項目,並從菜單中選擇 Team > Commit。Eclipse 會顯示一個 Commit 對話框(參見圖 18),其中匯總了您作出的變更。
圖 18. 將變更提交給存儲庫
如果仔細觀察,您會看到一個屬性更改為項目目錄(我已經添加了 svn:ignore 屬性,以使某些文件保留在存儲庫外),並且在添加 threadWork.c 時,刪除了 main.c。這一變更對實際上表示的是一個操作(文件重命名)。
此時,如果您要使某些資源保留在存儲庫外,則可以取消對這些資源選擇。如果您在一個文件中完成了部分工作,並且不希望檢入未完成的變更,則這種方法非常有用。在頂部的文本字段中輸入適當的注釋,然後單擊 OK 將變更檢入存儲庫。
結束語
Subclipse 項目將對 Subversion 版本控制系統的支持與 Eclipse 出色的團隊項目管理功能集成在一起(後者僅對 CVS 服務器提供開箱即用的支持)。使用 Eclipse 的更新管理器,您可以輕松地將 Subclipse 添加到您的 Eclipse 安裝中,這允許您直接從 Eclipse 中使用這一高級(至少我是這麼認為)版本控制系統。
雖然將項目添加到存儲庫 —— 並管理您的項目資源(如果存在)—— 對不熟悉 Subversion 的用戶來說,是一項望而生畏的任務,但常用操作的過程非常簡單。本文為您詳細介紹了日常操作,幫助您熟悉 Subclipse。