用 Subversion 構(gòu)建版本控制環(huán)境![]() |
![]() | 劉冬 , Java自由人 2005 年 9 月 本文將介紹如何通過 Subversion 來構(gòu)建小組開發(fā)過程中最為重要的版本控制環(huán)境,包括Subversion 環(huán)境的安裝配置以及如何通過各種有效的客戶端工具來提高工作的效率。 一. 首先我們先來認(rèn)識(shí)一下 Subversion Subversion 項(xiàng)目的初衷是為了替換現(xiàn)在開源社區(qū)最為流行的版本控制軟件 CVS,在 CVS的功能的基礎(chǔ)上有很多的提升同時(shí)也能較好的解決 CVS 系統(tǒng)的一些不足,這些提升主要包括以下的一些方面: 1. 目錄、文件以及改名等元數(shù)據(jù)的版本化 2. 提交操作是真正的原子操作 3. 可通過 Apache 服務(wù)器提供基于 WebDAV/DeltaV 協(xié)議的支持 4. 可獨(dú)立運(yùn)行 5. 分支(Branching)與標(biāo)簽(Tagging)操作是輕量級(jí)的; 6. 客戶服務(wù)器端分層庫(kù)結(jié)構(gòu)設(shè)計(jì); 7. 資源庫(kù)可以采用數(shù)據(jù)庫(kù)(BerkeleyDB)或者是使用特定格式的文件進(jìn)行存儲(chǔ); 8. 更有效的對(duì)二進(jìn)制文件進(jìn)行處理。 更多的特性可以參照 Subversion 提供的文檔(http://subversion.tigris.org/)
二. Subversion版本控制環(huán)境在Windows系統(tǒng)下的安裝 在Windows下安裝最為方便的辦法就是下載安裝程序,你可以到下面這個(gè)地址下載最新的二進(jìn)制壓縮版本svn-win32-1.2.3.zip ,地址是: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 把該文件解壓到一個(gè)目錄,假定為 D:\subversion。 接下來新建一個(gè)存放項(xiàng)目的資源庫(kù)目錄,例如:D:\repository\project1,執(zhí)行下面命令對(duì)這個(gè)項(xiàng)目目錄進(jìn)行初始化: D:\subversion\bin> svnadmin create D:\repository\project1 Subversion會(huì)在D:\repository\project1目錄下生成很多的子目錄以及文件,接下來我們需要設(shè)置該項(xiàng)目的用戶信息以及項(xiàng)目的基本信息,打開D:\repository\project1\conf\passwd文件,去掉[users]的注釋,并添加用戶如下:
Subversion使用了明碼存儲(chǔ)用戶的口令,這應(yīng)該算是它的一個(gè)不足。 接下來打開conf\svnserve.conf修改如下
在做完這些基本的設(shè)置后就可以啟動(dòng) Subversion 了,當(dāng)然最好的方式就是讓 Subversion 做為一個(gè)服務(wù)來運(yùn)行,我們可以通過一個(gè)第三方的工具 SVNService 讓 Subversion 以 Windows 服務(wù)的方式運(yùn)行。 到 http://dark.clansoft.dk/~mbn/svnservice/ 下載SVNService.zip并把它解壓到{Subversion}\bin目錄下,通過運(yùn)行 svnservice -install -d -r D:\repository\project1 ,執(zhí)行的結(jié)果顯示:SVNService installed. 這時(shí)候你可以在服務(wù)控制臺(tái)中看到名為SVNService的服務(wù),啟動(dòng)它就可以了,如果你不想用服務(wù)的方式啟動(dòng)Subversion,你可以運(yùn)行 svnserve -d來啟動(dòng)Subversion。 要卸載SVNService服務(wù),只需要運(yùn)行 SVNService -remove 即可。 至此,Subversion已經(jīng)安裝成功,我們將在接下來的一節(jié)中介紹如何通過各種客戶端對(duì)資源庫(kù)進(jìn)行操作。
一個(gè)版本控制軟件好不好不僅在于服務(wù)器端是否提供足夠強(qiáng)大的功能,同時(shí)有沒有足夠友好的客戶端也是非常重要的。 Subversion 本身提供一個(gè)基于命令行的工具 svn,基本上所有的操作都可以通過這個(gè)工具來完成,但是用戶操作界面不太友好。不過我們可以先使用這個(gè)工具來驗(yàn)證一下我們之前安裝的 Subversion 服務(wù)是否已經(jīng)正常工作。接下來我們先隨便導(dǎo)入一個(gè)項(xiàng)目,并對(duì)這個(gè)項(xiàng)目的某些文件進(jìn)行簡(jiǎn)單的修改、提交并重新導(dǎo)出項(xiàng)目,通過這些基本的操作先來體驗(yàn)一下 Subversion。(為了操作方便你最好把{subversion}\bin目錄加到系統(tǒng)的PATH環(huán)境變量中) 1. 導(dǎo)入項(xiàng)目 轉(zhuǎn)到你的項(xiàng)目所在的目錄,執(zhí)行下面命令來提交整個(gè)項(xiàng)目 2. 檢出項(xiàng)目 3. 提交修改后的文件 4. 獲取最新的版本 上面四個(gè)是版本控制環(huán)境中最最基本的操作,不過這樣的操作環(huán)境你肯定覺得麻煩,對(duì)于使用Eclipse環(huán)境進(jìn)行開發(fā)的朋友來講,接下來我們介紹一個(gè) Eclipse的插件Subclipse,該插件提供對(duì)Subversion服務(wù)的操作支持。你可以單獨(dú)下載該插件的壓縮包進(jìn)行本地更新或者通過 Eclipse Update進(jìn)行遠(yuǎn)程安裝,遠(yuǎn)程安裝的URL是 http://subclipse.tigris.org/update ,相信大家對(duì)Eclipse Update已經(jīng)了如指掌,這里不再羅嗦。 檢查一下插件有沒有安裝成功吧,打開菜單Windows->Preferences->Team檢查是否有SVN節(jié)點(diǎn),點(diǎn)擊SVN即可看到該插件的設(shè)置界面如下圖所示: ![]() 保持默認(rèn)的設(shè)置即可,接下來我們通過該插件將一個(gè)項(xiàng)目導(dǎo)入到Subversion服務(wù)器中,右擊項(xiàng)目名->Team->Share Project…打開項(xiàng)目共享對(duì)話框,對(duì)話框有兩個(gè)選擇,一是Eclipse內(nèi)置的對(duì)CVS的支持,還有另外一個(gè)就是我們剛裝上的SVN。選擇SVN進(jìn)入服務(wù)器設(shè)置界面,入下圖 ![]() 需要填寫的是服務(wù)器的URL以及用戶名和口令,服務(wù)器的URL不需要填寫項(xiàng)目名稱,點(diǎn)擊下一步按鈕進(jìn)入項(xiàng)目名稱設(shè)置 ![]() 在這里可以看到Subclipse會(huì)自動(dòng)給URL加上項(xiàng)目的名稱。點(diǎn)擊結(jié)束按鈕將出現(xiàn)提交對(duì)話框如下圖 ![]() 選擇你所需要提交的文件或者目錄點(diǎn)擊OK按鈕即可完成項(xiàng)目的導(dǎo)入。接下來的很多操作跟CVS很類似,但是又比CVS的功能強(qiáng)大得多,隨便右擊一個(gè)文件打開Team的上下文菜單如下: ![]() 通過該菜單我們可以看到CVS有的功能在這上面都有,而且還包括可以對(duì)文件進(jìn)行加鎖和解鎖操作,同時(shí)還有可以設(shè)置文件的屬性,可以通過SVN Properties視圖查看某個(gè)文件的屬性 ![]() 與CVS不同的是當(dāng)文件被修改后SVN插件顯示的是一個(gè)星號(hào)的小圖標(biāo)。同樣的,當(dāng)有些文件你并不想添加到資源庫(kù)中的時(shí)候,你也可以像CVS一樣把該文件添加到svn:ignore。Subclipse插件還有更多其他的功能這里不一一介紹了,大家可以在使用的過程中去發(fā)掘。 以上介紹的針對(duì)使用Eclipse開發(fā)環(huán)境的人員,但是項(xiàng)目組的一些其他成員例如網(wǎng)頁(yè)設(shè)計(jì)師,他們?cè)趺磥矸奖愕氖褂肧ubversion呢?因此接下來我們介紹一個(gè)集成在Windows Shell的客戶端工具TortoiseSVN (http://tortoisesvn.tigris.org/),利用這個(gè)工具也可以非常簡(jiǎn)單的進(jìn)行資源庫(kù)的操作。TortoiseSVN的安裝非常簡(jiǎn)單,直接運(yùn)行安裝程序,按照默認(rèn)方式安裝即可,安裝完畢需要重新啟動(dòng)系統(tǒng)。 如果沒什么意外的話,隨便右擊一個(gè)文件即可看到上下文菜單多了一個(gè)菜單項(xiàng)是TortoiseSVN,如果是文件夾還會(huì)有另外一個(gè)項(xiàng)是SVN Checkout…。在使用之前你可以根據(jù)自己的喜歡對(duì)TortoiseSVN進(jìn)行一些設(shè)置,右擊任一文件選擇TortoiseSVN-> Settings即可打開設(shè)置對(duì)話框如下: ![]() TortoiseSVN的一個(gè)非常有用的工具就是資源庫(kù)瀏覽器,在桌面空白位置單擊鼠標(biāo)右鍵選擇TortoiseSVN->Repo-Browser即可打開資源庫(kù)瀏覽器如下圖所示: ![]() 通過該瀏覽器你可以瀏覽資源庫(kù)中的所有項(xiàng)目以及項(xiàng)目中每一個(gè)文件的信息。但是怎么做一些日常的操作呢,例如提交、更新等等? 首先我們先看如何從資源庫(kù)中檢出(CheckOut)一個(gè)已有的項(xiàng)目,在空白處單擊鼠標(biāo)右鍵選擇SVN Checkout…菜單項(xiàng) ![]() 輸入存放項(xiàng)目的文件夾以及項(xiàng)目對(duì)應(yīng)的SVN的URL地址如上圖,點(diǎn)擊OK按鈕后TortoiseSVN會(huì)顯示詳細(xì)的進(jìn)度信息 ![]() 轉(zhuǎn)到存放項(xiàng)目的文件夾即可看到整個(gè)項(xiàng)目的所有文件已經(jīng)被檢出,而且圖標(biāo)已經(jīng)被替換成TortoiseSVN的圖標(biāo),如下圖所示: ![]() 這個(gè)時(shí)候你就可以隨意的修改文件,并在修改后右擊所修改的文件即可進(jìn)行提交或者更新操作。 以上介紹的三種不同的Subversion客戶端已經(jīng)可以滿足大部分用戶的要求,同時(shí)三者也可以互為補(bǔ)充。另外Subversion也可以與 Apache HTTP服務(wù)器結(jié)合提供基于WebDAV協(xié)議的服務(wù),其在共享方面遠(yuǎn)遠(yuǎn)超過了CVS,有興趣的讀者可以閱讀Subversion的文檔進(jìn)行配置。 對(duì)正在使用CVS的用戶來講,也可以通過一個(gè)名為cvs2svn的工具來將已有的項(xiàng)目移植到Subversion中,該工具可以在http://cvs2svn.tigris.org/ 下載。
|
聯(lián)系客服