用 Subversion 構建版本控制環境

 

轉自:http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/

用 Subversion 構建版本控制環境

 

劉冬 , Java自由人

2005 年 9 月

本文將介紹如何通過 Subversion 來構建小組開發過程中最爲重要的版本控制環境,包括Subversion 環境的安裝配置以及如何通過各種有效的客戶端工具來提高工作的效率。

一. 首先我們先來認識一下 Subversion

Subversion 項目的初衷是爲了替換現在開源社區最爲流行的版本控制軟件 CVS,在 CVS的功能的基礎上有很多的提升同時也能較好的解決 CVS 系統的一些不足,這些提升主要包括以下的一些方面:

1. 目錄、文件以及改名等元數據的版本化
不同於 CVS 只關心文件的內容以及文件是否存在,所有文件、目錄的相關操作都是被版本化的,例如文件的改名、拷貝等等;

2. 提交操作是真正的原子操作
在 Subversion 中,提交操作是不可分割的,修訂版本號是基於每次提交操作而非文件。提交日誌被附加在每個修訂版本中,而不是像 CVS 一樣冗餘的進行存儲;

3. 可通過 Apache 服務器提供基於 WebDAV/DeltaV 協議的支持
該功能可使 Subversion 通過 Apache Web 服務器使資源庫更加靈活的在網上進行共享,使其在互操作性上大大優於 CVS;

4. 可獨立運行
當你不想使用 Apache 2.x 時候,你也可以使用 Subversion,它可以以守護進程或者是Windows 下的服務方式獨立運行;

5. 分支(Branching)與標籤(Tagging)操作是輕量級的;

6. 客戶服務器端分層庫結構設計;

7. 資源庫可以採用數據庫(BerkeleyDB)或者是使用特定格式的文件進行存儲;

8. 更有效的對二進制文件進行處理。

更多的特性可以參照 Subversion 提供的文檔(http://subversion.tigris.org/)



回頁首


二. Subversion版本控制環境在Windows系統下的安裝

在Windows下安裝最爲方便的辦法就是下載安裝程序,你可以到下面這個地址下載最新的二進制壓縮版本svn-win32-1.2.3.zip ,地址是: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 把該文件解壓到一個目錄,假定爲 D:/subversion。

接下來新建一個存放項目的資源庫目錄,例如:D:/repository/project1,執行下面命令對這個項目目錄進行初始化: D:/subversion/bin> svnadmin create D:/repository/project1

Subversion會在D:/repository/project1目錄下生成很多的子目錄以及文件,接下來我們需要設置該項目的用戶信息以及項目的基本信息,打開D:/repository/project1/conf/passwd文件,去掉[users]的註釋,並添加用戶如下:



### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
admin = admin1234
liudong = liudong123

Subversion使用了明碼存儲用戶的口令,這應該算是它的一個不足。

接下來打開conf/svnserve.conf修改如下



[general]
anon-access = read
auth-access = write
password-db = passwd
realm = project1

在做完這些基本的設置後就可以啓動 Subversion 了,當然最好的方式就是讓 Subversion 做爲一個服務來運行,我們可以通過一個第三方的工具 SVNService 讓 Subversion 以 Windows 服務的方式運行。

到 http://dark.clansoft.dk/~mbn/svnservice/ 下載SVNService.zip並把它解壓到{Subversion}/bin目錄下,通過運行 svnservice -install -d -r D:/repository/project1 ,執行的結果顯示:SVNService installed. 這時候你可以在服務控制檯中看到名爲SVNService的服務,啓動它就可以了,如果你不想用服務的方式啓動Subversion,你可以運行 svnserve -d來啓動Subversion。

要卸載SVNService服務,只需要運行 SVNService -remove 即可。

至此,Subversion已經安裝成功,我們將在接下來的一節中介紹如何通過各種客戶端對資源庫進行操作。





回頁首


三. Subversion 各種客戶端的使用

一個版本控制軟件好不好不僅在於服務器端是否提供足夠強大的功能,同時有沒有足夠友好的客戶端也是非常重要的。

Subversion 本身提供一個基於命令行的工具 svn,基本上所有的操作都可以通過這個工具來完成,但是用戶操作界面不太友好。不過我們可以先使用這個工具來驗證一下我們之前安裝的 Subversion 服務是否已經正常工作。接下來我們先隨便導入一個項目,並對這個項目的某些文件進行簡單的修改、提交併重新導出項目,通過這些基本的操作先來體驗一下 Subversion。(爲了操作方便你最好把{subversion}/bin目錄加到系統的PATH環境變量中)

1. 導入項目

轉到你的項目所在的目錄,執行下面命令來提交整個項目
svn import . svn://localhost/project1 -m "initial import" --username liudong --password liudong123
其中[.]表示當前目錄,你也可以指定項目的絕對路徑。

2. 檢出項目
爲了驗證剛纔導入的項目,我們轉到一個新的目錄下,執行
svn checkout svn://localhost/project1 --username liudong -password liudong123
就可以在當前目錄下生成一個project1的項目目錄,目錄中的內容就是我們剛纔所提交的所有文件。

3. 提交修改後的文件
修改項目中的任何一個文件,使用命令來提交所作的修改:
svn commit ReadMe.txt -m "modified" --username liudong -password liudong123

4. 獲取最新的版本
當項目組的其他成員修改並提交了某個文件,你可以通過下面命令來獲取到該文件的最新的版本:
svn update -r HEAD ReadMe.txt --username liudong -password liudong123

上面四個是版本控制環境中最最基本的操作,不過這樣的操作環境你肯定覺得麻煩,對於使用Eclipse環境進行開發的朋友來講,接下來我們介紹一個 Eclipse的插件Subclipse,該插件提供對Subversion服務的操作支持。你可以單獨下載該插件的壓縮包進行本地更新或者通過 Eclipse Update進行遠程安裝,遠程安裝的URL是 http://subclipse.tigris.org/update ,相信大家對Eclipse Update已經瞭如指掌,這裏不再羅嗦。

檢查一下插件有沒有安裝成功吧,打開菜單Windows->Preferences->Team檢查是否有SVN節點,點擊SVN即可看到該插件的設置界面如下圖所示:



保持默認的設置即可,接下來我們通過該插件將一個項目導入到Subversion服務器中,右擊項目名->Team->Share Project…打開項目共享對話框,對話框有兩個選擇,一是Eclipse內置的對CVS的支持,還有另外一個就是我們剛裝上的SVN。選擇SVN進入服務器設置界面,入下圖



需要填寫的是服務器的URL以及用戶名和口令,服務器的URL不需要填寫項目名稱,點擊下一步按鈕進入項目名稱設置



在這裏可以看到Subclipse會自動給URL加上項目的名稱。點擊結束按鈕將出現提交對話框如下圖



選擇你所需要提交的文件或者目錄點擊OK按鈕即可完成項目的導入。接下來的很多操作跟CVS很類似,但是又比CVS的功能強大得多,隨便右擊一個文件打開Team的上下文菜單如下:



通過該菜單我們可以看到CVS有的功能在這上面都有,而且還包括可以對文件進行加鎖和解鎖操作,同時還有可以設置文件的屬性,可以通過SVN Properties視圖查看某個文件的屬性



與CVS不同的是當文件被修改後SVN插件顯示的是一個星號的小圖標。同樣的,當有些文件你並不想添加到資源庫中的時候,你也可以像CVS一樣把該文件添加到svn:ignore。Subclipse插件還有更多其他的功能這裏不一一介紹了,大家可以在使用的過程中去發掘。

以上介紹的針對使用Eclipse開發環境的人員,但是項目組的一些其他成員例如網頁設計師,他們怎麼來方便的使用Subversion呢?因此接下來我們介紹一個集成在Windows Shell的客戶端工具TortoiseSVN (http://tortoisesvn.tigris.org/),利用這個工具也可以非常簡單的進行資源庫的操作。TortoiseSVN的安裝非常簡單,直接運行安裝程序,按照默認方式安裝即可,安裝完畢需要重新啓動系統。

如果沒什麼意外的話,隨便右擊一個文件即可看到上下文菜單多了一個菜單項是TortoiseSVN,如果是文件夾還會有另外一個項是SVN Checkout…。在使用之前你可以根據自己的喜歡對TortoiseSVN進行一些設置,右擊任一文件選擇TortoiseSVN-> Settings即可打開設置對話框如下:



TortoiseSVN的一個非常有用的工具就是資源庫瀏覽器,在桌面空白位置單擊鼠標右鍵選擇TortoiseSVN->Repo-Browser即可打開資源庫瀏覽器如下圖所示:



通過該瀏覽器你可以瀏覽資源庫中的所有項目以及項目中每一個文件的信息。但是怎麼做一些日常的操作呢,例如提交、更新等等?

首先我們先看如何從資源庫中檢出(CheckOut)一個已有的項目,在空白處單擊鼠標右鍵選擇SVN Checkout…菜單項



輸入存放項目的文件夾以及項目對應的SVN的URL地址如上圖,點擊OK按鈕後TortoiseSVN會顯示詳細的進度信息



轉到存放項目的文件夾即可看到整個項目的所有文件已經被檢出,而且圖標已經被替換成TortoiseSVN的圖標,如下圖所示:



這個時候你就可以隨意的修改文件,並在修改後右擊所修改的文件即可進行提交或者更新操作。

以上介紹的三種不同的Subversion客戶端已經可以滿足大部分用戶的要求,同時三者也可以互爲補充。另外Subversion也可以與 Apache HTTP服務器結合提供基於WebDAV協議的服務,其在共享方面遠遠超過了CVS,有興趣的讀者可以閱讀Subversion的文檔進行配置。

對正在使用CVS的用戶來講,也可以通過一個名爲cvs2svn的工具來將已有的項目移植到Subversion中,該工具可以在http://cvs2svn.tigris.org/ 下載。





回頁首


參考資料





回頁首


關於作者

 

劉冬,一直使用J2EE/J2ME從事移動業務方面的開發。現在可以通過Java自由人網站來跟我聯繫,網址是:http://www.javayou.com,另外我的郵件地址是[email protected]


發佈了31 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章