天天看點

用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境

用 Subversion 建構版本控制環境

用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 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 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
回頁首

二. 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 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 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 建構版本控制環境用 Subversion 建構版本控制環境
保持預設的設定即可,接下來我們通過該插件将一個項目導入到Subversion伺服器中,右擊項目名->Team->Share Project…打開項目共享對話框,對話框有兩個選擇,一是Eclipse内置的對CVS的支援,還有另外一個就是我們剛裝上的SVN。選擇SVN進入伺服器設定界面,入下圖
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
需要填寫的是伺服器的URL以及使用者名和密碼,伺服器的URL不需要填寫項目名稱,點選下一步按鈕進入項目名稱設定
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
在這裡可以看到Subclipse會自動給URL加上項目的名稱。點選結束按鈕将出現送出對話框如下圖
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
選擇你所需要送出的檔案或者目錄點選OK按鈕即可完成項目的導入。接下來的很多操作跟CVS很類似,但是又比CVS的功能強大得多,随便右擊一個檔案打開Team的上下文菜單如下:
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
通過該菜單我們可以看到CVS有的功能在這上面都有,而且還包括可以對檔案進行加鎖和解鎖操作,同時還有可以設定檔案的屬性,可以通過SVN Properties視圖檢視某個檔案的屬性
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境

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

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

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

用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
TortoiseSVN的一個非常有用的工具就是資源庫浏覽器,在桌面空白位置單擊滑鼠右鍵選擇TortoiseSVN->Repo-Browser即可打開資源庫浏覽器如下圖所示:
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境

通過該浏覽器你可以浏覽資源庫中的所有項目以及項目中每一個檔案的資訊。但是怎麼做一些日常的操作呢,例如送出、更新等等?

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

用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
輸入存放項目的檔案夾以及項目對應的SVN的URL位址如上圖,點選OK按鈕後TortoiseSVN會顯示詳細的進度資訊
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
轉到存放項目的檔案夾即可看到整個項目的所有檔案已經被檢出,而且圖示已經被替換成TortoiseSVN的圖示,如下圖所示:
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境

這個時候你就可以随意的修改檔案,并在修改後右擊所修改的檔案即可進行送出或者更新操作。

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

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

用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
回頁首
參考資料
  • Subversion的官方網站
  • Subclipse插件
  • TortoiseSVN
  • Eclipse官方網站
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
回頁首
關于作者
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
劉冬,一直使用J2EE/J2ME從事移動業務方面的開發。現在可以通過Java自由人網站來跟我聯系,網址是:http://www.javayou.com,另外我的郵件位址是[email protected]。
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
用 Subversion 建構版本控制環境用 Subversion 建構版本控制環境
回頁首