SVN安裝指南
第一章 引 言 1.1 編寫目的 版本控制之于程式員,就好比安全網之于高空秋千表演者。知道安全網就在那裡,萬一自己摔落它能夠提供保護,高空秋千表演者才能放心大膽地在空中飛躍。同樣,版本控制使您有能力去冒以往想都不敢想的風險。如果哪兒出了錯,您總是可以使自己的代碼回複到一個已知的、工作正常的版本。您可以在不觸及主幹的分支中進行試驗,而不會影響到其他小組成員。在已經釋出的産品的較老版本中發現 bug 時,您可以輕松檢出特定版本,以确認、修訂,并生成該 bug 的修補程式。如果沒有版本控制,您必須極為慎之又慎,緩慢地推進,總而言之,生産力會更低。 Subversion 是一種開放源碼的全新版本控制系統,支援可在本地通路或通過網絡通路的資料庫和檔案系統存儲庫。不但提供了常見的比較、修補、标記、送出、回複和分支功能性,Subversion 還增加了追蹤移動和删除的能力。此外,它支援非 ASCII 文本和二進制資料,所有這一切都使 Subversion 不僅對傳統的程式設計任務非常有用,同時也适于 Web 開發、圖書創作和其他在傳統方式下未采納版本控制功能的領域! 第二章 安裝配置 本安裝基于Windows vista環境下進行安裝與配置的,其它windows版本都可用;搭建此項目管理伺服器首先必須要安裝Apache伺服器。 2.1 安裝Apache ( 1)下載下傳Apache 通路位址: http://httpd.apache.org/download.cgi下載下傳Apache. 注意: Apache低于2.0.54的Windows版本的存在編譯問題,低于2.0.54的版本不能與Subversion 1.2一起工作。2.2.X目前不能很好支援SVN 1.4.X。是以目前建議下載下傳 Apache 2.0.63版本 (2) 安裝 下載下傳完成後運作 apache_2.0.63-win32-x86-no_ssl.msi ,根據提示進行操作。遇到系統要求輸入SERVER的URL時,如果你的伺服器沒有DNS名稱,請直接輸入IP位址(此檔案也可在安裝後進行修改,該檔案位于Apache Group/Apache2/conf/httpd.conf檔案)。 注意:如果你已經有了 IIS或其他監聽80段口的程式,安裝會失敗,如果發生這種情況,直接到程式的安裝目錄/Apache Group/Apache2/conf,打開httpd.conf。編輯檔案的Listen 80為其他可用的端口,例如Listen 8080,然後重新啟動-這樣就不會那個問題了,或者将其它應用的端口進行改之。 ( 3)檢查 安裝完成後浏覽 http://localhost/
若成功,可看到apache歡迎頁面。如下圖所示:
SVN安裝指南!
2.2 安裝Subversion ( 1)下載下傳 Subversion 位址: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 在本執行個體中,選擇下載下傳svn-win32-1.4.6.zip此版本. (2)安裝 将svn-win32-1.4.6.zip解壓到安裝程式的目錄下;(如果下載下傳的是exe安裝檔案,可以根據指導安裝, Subversion會自動認識到你安裝了Apache,你就幾乎完成了工作),本執行個體中采用解壓方式進行安裝,它不會自動找到Apache伺服器,是以你還有額外的步驟。 (3)後續 步驟1 從svn-win32-1.4.6/bin 中将mod_authz_svn.so mod_dav_svn.so複制到Apache Group/Apache2/modules下,再将svn-win32-1.4.6/bin目錄下的所有dll檔案全部複制到Apache Group/Apache2/bin檔案夾下。 步驟2 找到Apache Group/Apache2/conf/httpd.conf檔案,然後去掉如下幾行的注釋(删除 '#'标記): #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so 将下面兩行添加到LoadModule部分的最後。 LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 進行如上後續修改後完成了SVN+Apache之間的WebDav的工作了。重新開機Apache以後可看到如下圖:
這是安裝最終的圖,圖中狀态欄顯示Apache/2.0.63(Win32) SVN1.4.6 DAV/2是由于還安裝了mod_python,此步驟稍後将在Trac中講解,如上安裝好後應顯示為Apache/2.0.63(Win32) SVN1.4.6 DAV. 2.3 配置 ( 1)建立版本庫 首先建立一個用于存在SVN項目的版本庫,本例中在D盤驅動器中建立目錄var/svnhome,可通過如下指令建立版本庫,當然如果你需要建立多個版本庫隻需将名稱進行換名即可。 首先以cmd指令視窗進入svn-win32-1.4.6/bin目錄結構下,輸入: >svnadmin create --fs-type fsfs D:/ var /svnhome/projects 回車,等待提示建立完成;完成後則進行相關密碼以及權限設定 。 (2)設定密碼檔案 以 cmd 指令視窗進入路徑 Apache Group/Apache2/ bin 目錄 下 , 然後輸入 : > htpasswd -c D:/var/svnhome/projects/conf/<filename> <username> 本例中 filename 名稱使用 passwordfile,username 名稱使用 admin( 注意filename無需字尾名),這樣 便可在 var/svnhome/projects/conf 目錄下建立一個使用者名為 admin 的passwordfile 檔案 ,此檔案 将在後面配置權限所用 。
此後添加使用者,可使用如下指令:
>htpasswd filename <username>
删除使用者,使用如下指令:
>htpasswd -D filename <username>
若對密碼不想加密可使用-cp 參數,windows 平台下預設是MD5 加密 (3)設定權限檔案 用文本編輯器在var/svnhome/projects/conf 路徑下生成名為svnaccessfile的檔案,此名稱将在
Apache Group/Apache2/conf/httpd.conf
配置檔案中所用,此處不使用擴充名。編輯一下内容: [groups] committers = admin developers = Allen [/] * = r @developers = r @committers = rw [projects:/] @ developers = rw 基本含義是根目錄下任何人有讀權限, committers 組有讀寫權限;admin對projects讀寫權限,而 developers 組隻有讀的權限 。 備注: 如果有中文路徑,那要把檔案存成UTF8格式,不建議使用中文路徑,這在程式設計當中是嚴格禁止的. (4)配置服務 編輯
Apache Group/Apache2/conf/httpd.conf
檔案,添加下面代碼。
<Location /svn> DAV svn SVNPath "D:/var/svnhome/projects" AuthType Basic AuthName "Subversion repositories" AuthUserFile " D:/var/svnhome/projects/conf/passwordflie" AuthzSVNAccessFile "D:/var/svnhome/projects/conf/svnaccessfile" Require valid-user SVNAutoversioning on ModMimeUsePathInfo on </Location> AuthzSVNAccessFile 指向的是 authz 的政策檔案,詳細的權限控制可以在這個政策檔案中指定。通路檔案 svnaccessfile 的文法與svnserve.conf和 Apache 的配置檔案非常相似,以(#)開頭的行會被忽略;在它的簡單形式裡,每一小節命名一個版本庫和一個裡面的路徑;認證使用者名是在每個小節中的選項名;每個選項的值描述了使用者通路版本庫的級别:r(隻讀)或者rw(讀寫),如果使用者沒有提到或者值留白,通路是不允許的; * 表示所有使用者,用它控制匿名使用者的通路權限;@符号區分組和使用者。如: [groups] committers = zc, cjf developers = Allen, admin, cjs [/] * = r @committers = rw [/branches/dev] @developers = rw [/tags] tony = rw [/private] * = @committers= r 使用 SVNParentPath 代替 SVNPath 來指定多個版本庫的父目錄時,其中所有的版本庫都将按照這個政策檔案配置。例如上例中 tony 将對所有版本庫裡的 /tags 目錄具有讀寫權限。如果要對具體每個版本庫配置,用如下的文法: [groups] project1_committers = zc, cjf project2_committers = admin, Allen, cjs, tony [repos1:/] * = r @ project1_committer = rw [repos2:/] * = r @ project2_committer = rw 這樣 repos1的 project1_committer 組隻能對 repos1 版本庫下的檔案具有寫權限而不能修改版本庫 repos2 ,同樣 repos2 的 project2_commiter 組也不能修改 repos1 版本庫的檔案。 備注: 如果使用<Location /svn/>可列出D:/var/svnhome/projects 下的版本庫,若為<Location /svn>則不能通路http://127.0.0.1/svn下的項目,而隻能這樣通路,如http://127.0.0.1/svn/<projectname> (5)配置内容說明
設定 | 解釋 |
<Location> | 意思是Subversion版本庫的URL是http://ipaddress/svn/ |
DAV svn | 告訴Apache是哪個子產品響應那個URL的請求-此刻是Subversion子產品。 |
SVNPath | 告訴Subversion需要檢視的版本庫位于D:/var/svnhome/projects之下 |
AuthType Basic | 激活基本認證,就是使用者名/密碼 |
AuthName | 用來說明彈出要求輸入認證資訊的對話框資訊,可以使用中文. |
AuthUserFile | 指定使用認證密碼的檔案 |
AuthzSVNAccessFile | 位置Subversion版本庫的通路控制權限的路徑檔案 |
Require valid-user | 指定隻有輸入了正确的使用者/密碼的使用者可以通路URL |
另外如果當此時通過通路 http://127.0.0.1/svn提示403 Forbidden錯誤的資訊的話,主要是由于svnserve.conf此檔案中的[general]内容password-db = passwordfile内容加入(或者将原來的#去掉,同時将passwd修改你所建立的密碼檔案,本例中為passwordfile),也可以實作根目錄的通路了! 2.4 安裝TortoiseSVN(可選) 此工具是用戶端軟體,主要可以用于從伺服器上check版本庫項目以及updata與commit等相關SVN的管理操作,其下載下傳位址為:http://tortoisesvn.net/downloads,另外還可以下一個語言包,都在給其的subversion官方網站上能下到.