??xml version="1.0" encoding="utf-8" standalone="yes"?>
本文提供一個簡易的安裝指南Q說明在 Windows 環境下安?Subversion 伺服器的步驟Q以?TortoiseSVN 用戶端工L安裝步驟?/p>
Subversion 是一個版本控制系i,它是Ҏ CVSQConcurrent Versions SystemQ的功能為基C來a計Q但是改進了一?CVS 的缺點,例如Q在 CVS 中搬UL案目錄很不方便,Subverion 則連目錄的異動都納入版本管理;此外Q它也增加了其他的功能,例如Q不可分割的送交Q如同資料n交易的概念,送交多個檔案時Q若有Q何一個檔案失敗,則這次送交的所有檔案都不會進入檔案庫中Q、支援多E網路協定、一致的檔案差異比對Q不什麼檔案類型,均用二進位差異比對方式Q?...{等?/p>
由於目前手邊查到?Subversion 文gQ主要都是針?Linux 用戶來撰寫,所以這䆾文g特地針對 Windows 環境下安?Subversion 的步驟來說明Q希望透過這䆾文gQ能夠幫助你很快的把 Subversion 安裝起來?/p>
在安裝過E中Q會需要入一些命令列的指令,我不會詳細解釋某些指令的用途和意義Q因此你除了要熟?DOS 的基本指令,還應該隨時查?Subversion ?a target=_blank>d?/font>Q有中文?/font>Q,以了?Subverion 命o列工L使用Ҏ。圖形化介面雖然方便Q但是熟悉命令列工具的用,才能讓你得到完全的自由?/p>
如果你缺乏版本控制系iq基本觀念,q能夠順利安裝?SubversionQ可能安裝完成後׃知道下一步怎麼做了。這只簡單的提一點必要的基礎觀念,a住你最i還是得p Subversion 的官Ҏ件?/p>
以下是筆者安?Subverion 的作業環境與軟體版本Q?/p>
本節介紹安裝 Subversion 所需的步驟,請準備一台穩定的器Q作?Subversion 的伺服器?/p>
?http://httpd.apache.org 下載 Apache HTTP Server 2.0 ?for Windows 的安裝程式,我下載的檔案?apache_2.0.50-win32-x86-no_ssl.msi?/p>
下載之後直接安裝Q安裝過E很單Q就不贅qCQ但安裝之前請先檢查你的電腦是否有安?IISQ由?Apache 預設使用 80 portQ會?IIS 的網站衝H,你必須把 IIS ?Web 站台關閉Q再安裝 Apache HTTP Server?/p>
安裝完成以後Q開啟瀏覽器,瀏覽E址 http://127.0.0.1 看看有沒有出珑֮裝成功的E頁?/p>
如果 Apache HTTP Server 無法啟動Q請依下列步驟檢查: 珑֜要設?URL 路徑與檔案n實體路徑的對應關係。對應的方式有兩E,分別?SVNPath ?SVNParentPath?/p>
SVNPath 適合用來個別指定檔案庫的路徑Q語法是Q?/p>
1.1 p基本觀?/h3>
1.2 作業環境與軟體版?/h3>
2 安裝與徏?Subversion 伺服?/h2>
2.1 安裝 Apache HTTP Server
2.2 安裝 Subversion
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
把前面的 '#' 字元刪除Q然後把下面q行文字加到這群 LoadModule 指o的後面:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
問題排除
2.3 a定 Subversion 檔案庫的路徑
2.3.1 SVNPath
其中 "/svn/repos_name" 是用戶端存取特定檔案n?URIQUniform Resource IndentifierQ,SVNPath 後面指定的\徑則是檔案n的絕\徑,假設我們的檔案庫實際存攄路徑?d:/svn/MyProjectQ並且希望用戶端使用 "http://myserver/svn/myprj" ?URL 來存取檔案nQ那D加入 httpd.conf 的內容就是:
/svn/myprj> DAV svn SVNPath d:/svn/MyProject
注意 Location 標籤後面?/svn/myprj 的第一個斜R不可少Q?/p>
如果你的檔案庫都集中攑֜某個目錄之下,例如Qd:/svnQ那你就可以使用 SVNParentPath 的方式指定檔案n的根路徑Q例如:
/svn> DAV svn SVNParentPath d:/svn
這表C可以讓M人都可以透過 http://myserver/svn/<檔案庫名E?gt; 的方式,存取位於 d:/svn 這個目錄以下的所有檔案n。也是說,這個設定動作只需要一ơ,如果使用 SVNPathQ你必須為各個檔案n分別指定應的\徑?/p>
以上兩種a定方式都可以,方便赯Q這我用 SVNParentPath 來箔一指定所有檔案n的父?URL 路徑?/p>
?
接著便可以開始徏立檔案n?/p>
假設我們要把所有的檔案庫都攑֜ d:/svn 目錄下,珑֜要徏立一個測試用的檔案nQ名E叫??repositoryQ指令為Q?/p>
md d:/svn svnadmin create d:/svn/repository
命o埯完後Q檢查看?d:/svn/repository 目錄底下產生了哪些目錄和檔案?/p>
警告
檔案庫絕不可以在徏立在M遠端的儲存媒體上Q例如:E\碟?/p> |
這時候你已經建立了一個檔案nQ你可以先在本機用瀏覽器測試一下,E址輸入 http://svn/repositoryQ看看能不能看到檔案庫的內容Q正常的話應該像下圖一樣?/p>
如果以上的測試可以通過Q應該就行了。如果你還想要測試一下能不能從檔案n取出整個工作複本,可以埯下列指oQ非必要Q:
c:
cdtemp
svn co http://localhost/svn/repository WholeRepos
上述指o會切換到一個暫時的目錄 c:tempQ然後從檔案庫取出整個工作複本。最後一行指令是?svn.exe 埯 check out 動作Q縮?coQ,如果正確的話Q應該會示 "Checked out revision 0." 的訊息,此時 /svn/repository 這個檔案n底下的所有檔案目錄都已經取出Q並且複製一份到 c:/temp/WholeRepos 目錄下了?/p>
問題排除
如果示的錯誤訊息是Q?/p> svn: PROPFIND request failed on '/svn/repository' svn: PROPFIND of '/svn/repository': 405 Method Not Allowed (http://localhost) 請檢?Apache HTTP Server ?httpd.conf 檔案裡面?
如果示的錯誤訊息是Q?/p> svn: PROPFIND request failed on '/svn/repository' svn: Could not open the requested SVN filesystem 那表C在 /svn 應的實體目錄(?d:/svnQ下找不?reposiroty 這個目錄?/p> a:PROPFIND 是 WebDAV 用的 HTTP methodQ用來從資源中取得屬性?/p> |
測試完畢可以把 WholeRepos 這個目錄整個刪掉了?/p>
到目前為止,可以定檔案庫已E徏立完成,接下來就可以匯入案了?/p>
不用急著把你現有的正式專案匯入檔案nQ先建立一個用來測試的案目錄好了。我們先?c:/temp 底下Z?ProjectA 的專案目錄結構,參考下面的指oQ?/p>
c: cd temp md ProjectA md ProjectA/trunk md ProjectA/branches md ProjectA/tags svn import . http://localhost/svn/repository -m "Initial repository layout"
提示
本文在執?svn 命o時,都是使用 http 協定的方式,這樣我們可以確?Subversion ?Apache HTTP Server 的設定無誤,其他人就可以透過 Internet 存取檔案庫。當然你也可以用其他的協定,例如Qfile:///Q如果?file 協定Q最後一行指令就變成Q?/p> svn import . file:///d:/svn/repository -m "Initial repository layout" |
命o埯無誤的話Q應會看到如下的畫面Q?/p>
這時?ProjectA 這個專案已E匯入檔案n了,也就是說Q其他用者可以開始存取這個檔案n的專案取出文件和E式g。你可以參?Subversion 的官Ҏ冊中關於 svn.exe 這個用戶端命o列工L使用ҎQ多R習一下取出檔案、加入檔案、以及存入檔案等指o。萬一R習的過E中發生錯誤Q或者檔案n弄亂了,你可以把整個檔案n的目錄砍掉,回到 2.4 重新做一遍?/p>
以下會進一步討論檔案n和專案目錄結構的安排方式Q如果你急著惌試看用戶端如何存?Subversion 檔案庫,可以先蟩?.6 或第 3 ?/p>
延續前面的範例,如果你再匯入其他案Q例?ProjectBQ那麼整個檔案n的結構會變成這樣Q?/p>
/svn/repository/ +-- ProjectA/ +-- ProjectB/
也就是說 repository 這個檔案n面包含了兩個專案?/p>
如果你希望為每個專案徏立一個檔案nQ那麼在 2.4 中徏立檔案n的指令就變成Q?/p>
md d:/svn svnadmin create d:/svn/ProjectA svnadmin create d:/svn/ProjectB
這樣p成有兩個檔案n了,檔案庫名E分別是 ProjectA ?ProjectB?/p>
提示
如果案之間有共享的檔案Q徏議把這些盔R的專案放進同一個檔案nQ如果專案之間彼此毫無關係,那就採用一個檔案n放一個專案的方式Q這種方式{於案是檔案庫?/p> W一E方式有個比較奇怪的「功能」你應該要知道,是一個專案的 check in 動作Q也會o其他案的檔案的修訂版次遞增 Q如果這不是你惌的,請選擇第二種方式Q即一個檔案n只存放一個專案?/p> |
這補充說明一?ProjectA 的目錄結構。在 ProjectA 案的根目錄下徏立的 trunk、branches、和 tags 這三個目錄是有特別意的Q它們的作用分別是:
這是 Subverion 官方手冊的目錄結構安排方式,你可以自己決定要不要用這種配置方式Q詳細說明請參?a target=_blank>官方手冊的第五章Q子標題?"Choosing a Repository Layout"?/p>
提示
目錄名稱盡量不要用中文名E,這樣在用命令列時比較方便,也比較不會有問題?/p> |
照著前面的步驟做Q你會發珑֭取檔案n時都不用輸入希密碼Q這是因為我們之前的a定沒有啟用w分驗證的功能。但是我們通常不希望所有h都能L存取你的檔案庫,免得重要資產外洩Q或者資料被破壞Q因此了解如何加入n分驗證也是必要的?/p>
Serversion 提供了多E驗證用者n份的方式Q這只介?Windows w分驗證的方式,這種方式很適合用在開發團隊成員都在區域網路內的情況。請依下列步驟進行Q?/p>
LoadModule sspi_auth_module modules/mod_auth_sspi.so注意上面加入的這行一定要攑֜下面這行的前面:
LoadModule auth_module modules/mod_auth.so
DAV svn SVNParentPath d:/svn AuthType SSPI AuthName "Subversion 檔案? Require valid-user SSPIAuth On SSPIAuthoritative On SSPIDomain SSPIOfferBasic On
其中
好了Q現在開啟瀏覽器,輸入E址 http://127.0.0.1/svn/repository 看看Q你預期應該會看到如下的驗證畫面Q?/p>
但是L有出N個畫面,而是直接示檔案庫內容,怎麼回事Q?/p>
因為我們現在是使用 Windows x驗證Q你目前已經d這台器了,而你要存取的也是本機的資源,換句pQ你的n分已E被驗證過了Q所以就不會再要求你輸入希跟密|這是採用 SSPI E域驗證的好處?/p>
那麼Q如果你的同?John 的電腦有加入E域Q但是他qx都是d本機Q而非dE域Q在存取檔案庫時會不會要求入x號密|{案是如?John d他本的希和密D他在E域使用者的希密碼完全一樣的話,q需再入密|相反的,如果d本機的用者x號和密碼與網域用者x號密g同,W一ơ存取時必須入密{?/p>
你可以在別台器上,用一個網域裡沒有的用者x號去存取 Subverion 檔案庫,如果正確的話Q應該就會出現要求入x號密的視窗?/p>
以上還只是最基本的設定,如果你希望做些進階的設定,例如允許所有h都可以檢視檔案n的內容,但是不能修改Q或者要加入 SSL 加密制Q徏議您參?[
啟用w分驗證之後Q你會發珄命o列工?svn.exe 存取檔案庫時Q如果是?http:// 協定Q有些子命oQsubcommandQ執行時會出?"authorization failed" 的錯誤,這時候你可以?svn 命o中加?--username ?--password 來提供用者名E和密碼Q例如: svn co http://myserver/svn/ --username michael --password guesswhat 或者你也可以改?file:/// 協定?/p>
珑֜你已E有一個可以咦?Subversion 伺服器,可以試著在其他電腦上存取檔案庫了。如果你慣使用命o列工P那就只要在用戶端電腦上安?Subversion p了,存取檔案庫都是透過命o列工P主要?svn.exeQ。這要介紹的是一個專門?Windows 作業pȝa計?Subversion 用戶端:TortoiseSVNQ以下簡E?TSVNQ?/p>
安裝完成之後Q在M目錄名稱上點一下滑鼠右鍵都可以看到 TSVN 的功能選項,這也?TSVN 方便的地方,它不用跟開發工具整合Q而是跟作業系i整合在一P這樣不管你用什麼開發工P都可以輕鬆的使用 TSVN 來存取檔案n?/p>
接下來你可以?TSVN R習一下存取之前徏立好的檔案nQ試著把你現有的案匯入檔案庫中Q並且在用戶端?TSVN 埯取出、存入、更新等動作?/p>
TSVN 雖然是用戶端工具Q不過它也提供了建立檔案庫、以及匯入、匯出等功能Q因此安裝在伺服器端也挺方便的?/p>
按照本文說明的安裝步驟,希望能讓你順利在 Windows 環境下把 Subversion 安裝起來。但是安裝成功以後,真正的工作要才開始,如果你沒有花點時間閱讀 Subversion 的相關文Ӟ在用版本控制系iq過程中,一定會到a多問題?/p>
在正式將你的案加入 Subversion 檔案庫之前,您多考慮一下: 前兩個問你可以參?[2] 已經提供一份類似的文g了,不過既然寫了Q還是公佈出來吧Q中文資源多一些總是好的?/p>
提示
3 安裝用戶端:TortoiseSVN
3.1 安裝 TortoiseSVN
安裝完成後會要求你重新開?
4 i語
[1] | Subversion d書?a >http://svnbook.red-bean.com/ J體中文版:http://svn.ntcu.net/svnbook/ |
[2] | TortoiseSVN 官方文g?a >http://tortoisesvn.tigris.org/docs.html#DocDir |
[3] | http://svn.ntcu.net/kwiki/ |