摘要:版本控制在 軟件工程的領(lǐng)域中隸屬于軟件建構(gòu)管理(Configuration Management)的范疇,是軟件開發(fā)流程當(dāng)中相當(dāng)基本且重要的一環(huán),因此版本控制系統(tǒng)可說是開發(fā)人員必備的工具之一。本文將介紹一個(gè)開放原始碼的版 本控制系統(tǒng):Subversion,說明相關(guān)工具的安裝步驟,并且透過實(shí)例操作示范如何在Visual Studio .NET 2003里面對(duì)項(xiàng)目進(jìn)行版本管理。
Subversion 是一個(gè)自由/開放源碼的版本控制系統(tǒng),也是說 Subversion 管理著隨時(shí)間改變的檔案,這些檔案放置在一個(gè)中央檔案庫(kù) (repository) 中,這個(gè)檔案庫(kù),很像一個(gè)尋常的檔案服務(wù)器,不過它會(huì)記住每一次檔案的變動(dòng)。這樣你可以把檔案回復(fù)到舊的版本,或是瀏覽檔案的變動(dòng)歷程,許多人會(huì)把版本 控制系統(tǒng)想象成某種 “時(shí)光機(jī)器”。
目的:
在 Windows2003 Server 上安裝及設(shè)定 Subversion,以便于團(tuán)隊(duì)成員透過 Internet 協(xié)同開發(fā)軟件項(xiàng)目,并有版本控管功能。
在用戶端安裝 Subversion 的 Client-side 工具:TortoiseSVN,可以整合與檔案總管整合在一起,利用 GUI 方式提供了建立檔案庫(kù)、以及匯入、匯出等功能。
本文提供一個(gè)簡(jiǎn)易的安裝指南,說明在 Windows 環(huán)境下安裝 Subversion 服務(wù)器的步驟,以及 TortoiseSVN 用戶端工具的安裝步驟。
1. 簡(jiǎn)介
Subversion 是一個(gè)版本控制系統(tǒng),它是根據(jù) CVS(Concurrent Versions System)的功能為基礎(chǔ)來設(shè)計(jì),但是改進(jìn)了一些 CVS 的缺點(diǎn),例如:在 CVS 中搬移檔案目錄很不方便,Subverion 則連目錄的異動(dòng)都納入版本管理;此外,它也增加了其他的功能,例如:不可分割的送交(如同數(shù)據(jù)庫(kù)交易的概念,送交多個(gè)檔案時(shí),若有任何一個(gè)檔案失敗,則這 次送交的所有檔案都不會(huì)進(jìn)入檔案庫(kù)中)、支援多種網(wǎng)絡(luò)協(xié)定、一致的檔案差異比對(duì)(不管什么檔案類型,均使用二進(jìn)制差異比對(duì)方式)等等。
由于目前手邊查到的 Subversion 文件,主要都是針對(duì) Unix用戶來撰寫,所以這份文件特地針對(duì) Windows環(huán)境下安裝 Subversion 的步驟來說明,希望透過這份文件,能夠幫助你很快的把 Subversion安裝起來。
在安裝過程中,會(huì)需要輸入一些命令列的指令,本文不會(huì)詳細(xì)解釋某些指令的用途和意義,因此你除了要熟悉 DOS 的基本指令,還應(yīng)該隨時(shí)查閱 Subversion 的電子書(有中文版),以了解 Subverion 命令列工具的使用方法。圖形化界面雖然方便,但是熟悉命令列工具的使用,才能讓你得到完全的自由。
1.1 閱讀基本觀念
如果你缺乏版本控制系統(tǒng)的基本觀念,算能夠順利安裝好 Subversion,可能安裝完成后不知道下一步怎么做了。這里只簡(jiǎn)單的提一點(diǎn)必要的基礎(chǔ)觀念,記住你終還是得閱讀 Subversion 的官方文件。
1.2 作業(yè)環(huán)境與軟件版本
以下是本文件使用的作業(yè)環(huán)境與軟件版本:
Windows 2003 Server with SP1
Apache HTTP Server v2.0.55
Subversion v1.2.3
TortoiseSVN 1.2.6 build 4786
2. 安裝與建立 Subversion 服務(wù)器
本節(jié)介紹安裝 Subversion 所需的步驟,請(qǐng)準(zhǔn)備一臺(tái)穩(wěn)定的機(jī)器,作為 Subversion 的服務(wù)器。
2.1 安裝 Apache HTTP Server
到http://httpd.apache.org下載 Apache HTTP Server 2.0 版 for Windows 的安裝程序,我下載的檔案是 apache_2.0.50-win32-x86-no_ssl.msi。
下載之后直接安裝,安裝過程很簡(jiǎn)單,不贅述了,但安裝之前請(qǐng)先檢查你的計(jì)算機(jī)是否有安裝 IIS,由于 Apache 預(yù)設(shè)使用 80 port,會(huì)跟 IIS 的網(wǎng)站沖突,你必須把 IIS 的 Web 站臺(tái)關(guān)閉,再安裝 Apache HTTP Server。
安裝完成以后,開啟瀏覽器,瀏覽網(wǎng)址http://localhost看看有沒有出現(xiàn)安裝成功的網(wǎng)頁(yè)。
2.2 安裝 Subversion
1.到http://subversion.tigris.org/下載新版的 Subversion,你可以下載 .zip 或者打包好的自動(dòng)安裝程序,我下載的是檔案svn-1.2.3-setup.exe。
2.下載后直接安裝,安裝過程都是下一步,沒什么特別的。在此Windows安裝版增加了Apache modules的選項(xiàng),必要的環(huán)境變量都幫你設(shè)定好了。
2.2.1 手動(dòng)安裝Apache modules
以下步驟敘述手動(dòng)安裝Apache modules的程式(如果你下載的是 .zip 檔,要自行設(shè)定)。
把 $SVN_Install/bin/目錄下的 mod_dav_svn.so、 mod_authz_svn.so復(fù)制到 $Apache2_Install/modules/目錄下。
把 $SVN_Install/bin/目錄下所有的dll檔復(fù)制到 $Apache2_Install/bin/。
接著用文書編輯器開啟 Apache HTTP Server 的 httpd.conf(在 /conf/ 目錄下),尋找一堆 LoadModule 指令,先找到以下兩行:
#LoadModule dav_module modules/mod_dav.so#LoadModule dav_fs_module modules/mod_dav_fs.so把前面dav_svn_module的 '#' 字元?jiǎng)h除,然后把下面幾行文字加到這群 LoadModule 指令的后面:LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so
重新啟動(dòng) Apache HTTP Server。
clearcase/" target="_blank" >cc; BORDER-LEFT: medium none; WIDTH: ; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="" border=1>
問題排除
如果 Apache HTTP Server 無法啟動(dòng),請(qǐng)依下列步驟檢查:1. 檢查 Subversion 的路徑是否有在系統(tǒng)的 %PATH% 環(huán)境變數(shù)里面。2. 檢查你加入 httpd.conf 里的專案是否正確,記住 mod_dav_svn.so 和 mod_authz_svn.so 必須在其他 mod_dav*.so 模組之后載入。3. 檢查你加入的檔案。若dll檔沒有在正確位置,將無法正常啟動(dòng)。
2.3 設(shè)定 Subversion 檔案庫(kù)的路徑
現(xiàn)在要設(shè)定Apache http.config檔中 SVN URL 路徑與檔案庫(kù)實(shí)體路徑的對(duì)應(yīng)關(guān)系。對(duì)應(yīng)的方式有兩種,分別是 SVNPath 與 SVNParentPath。
2.3.1 SVNPath
SVNPath 適合用來個(gè)別指定檔案庫(kù)的路徑,語法是:
<Location /svn/repos_name>DAV svnSVNPath /absolute/path/to/repository</Location>
其中 "/svn/repos_name" 是用戶端存取特定檔案庫(kù)的 URI(Uniform Resource Indentifier),SVNPath 后面指定的路徑則是檔案庫(kù)的路徑,假設(shè)我們的檔案庫(kù)實(shí)際存放的路徑是 d:svnMyProject,并且希望用戶端使用http://myserver/svn/myprj的 URL 來存取檔案庫(kù),那么要加入 httpd.conf 的內(nèi)容是:
<Location /svn/myprj>DAV svnSVNPath d:svnMyProject</Location>
注意 Location 標(biāo)簽后面的 /svn/myprj 的第一個(gè)斜線不可少!
2.3.2 SVNParentPath
如果你的檔案庫(kù)都集中放在某個(gè)目錄之下,例如:d:svn,那你可以使用 SVNParentPath 的方式指定檔案庫(kù)的根路徑,例如:
<Location /svn>DAV svnSVNParentPath d:svn</Location>
這表示可以讓任何人都可以透過http://myserver/svn/<檔案庫(kù)名稱> 的方式,存取位于 d:svn 這個(gè)目錄以下的所有檔案庫(kù)。也是說,這個(gè)設(shè)定動(dòng)作只需要一次,如果使用 SVNPath,你必須為各個(gè)檔案庫(kù)分別指定對(duì)應(yīng)的路徑。
以上兩種設(shè)定方式都可以,方便起見,這里我用 SVNParentPath 來統(tǒng)一指定所有檔案庫(kù)的父層 URL 路徑。
將 的設(shè)定加到 Apache HTTP Server 的 httpd.conf 檔尾行了。接著便可以開始建立檔案庫(kù)。