根據網上資料結合自己的項目情況整理的:
1.準備工作
從http://httpd.apache.org/download.cgi 下載下傳最新版本的 Apache,本文下載下傳的是:apache_2.2.10-win32-x86-openssl-0.9.8i.msi
從http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100 下載下傳最新版本的Subversion(For win32),本文用的是:Setup-Subversion-1.5.3.msi
2.安裝apache
一旦有了 Apache2 安裝程式,輕按兩下它,然後它會指導你的安裝過程。安裝目錄為:C:\ApacheGroup\Apache2.2,建議為所有使用者在 80 端口安裝 Apache 服務。注意: 如果你已經有了 IIS 或其他監聽 80 端口的程式,安裝會失敗。如果發生這種情況,直接到程式的安裝目錄 \ApacheGroup\Apache2\conf,打開 httpd.conf。編輯檔案的 Listen 80 為其他可用的端口,例如 Listen 81,然後重新啟動 - 這樣就不會那個問題了。
現在可以測試 Apache 伺服器是否正确運作,将浏覽器指向 http://localhost/ , 将會看到一個預先配置的網站。
3.安裝Subversion
運作Subversion安裝程式,并根據指導安裝,安裝目錄設定為C:\Subversion。
安裝完畢後,從 Subversion 安裝目錄将 /bin/*.dll 複制到 Apache 的 bin 目錄,如果提示檔案已經存在,選擇不覆寫。再把Subversion\bin 目錄下的mod_authz_svn.so和mod_dav_svn.so兩個檔案拷貝到Apache2.2\modules。
使用記事本之類的文本編輯器修改Apache的配置檔案httpd.conf,做出如下修改:
去掉以下行的注釋:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
把下面兩行加到的最後:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
4.建立并設定Subversion工作目錄
在D盤建立目錄:d:\svnroot;
把C:\ApacheGroup\Apache2.2\bin加到環境變量path中;
運作cmd,cd到d:\svnroot目錄下,執行以下指令建立密碼檔案:
htpasswd -c svn.passwd jeffrey
建立權限控制檔案:d:\svnroot\svn.accessfile并用記事本輸入:
[groups]
admin = jeffrey
[/]
* = rw
打開apache的httpd.conf,在檔案的最後輸入:
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath D:\svnroot
SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "d:/svnroot/svn.passwd"
AuthzSVNAccessFile "d:/svnroot/svn.accessfile"
Require valid-user
</Location>
到http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex
(如果通路這個連結需要認證,輸入使用者名稱 guest,無需密碼)
下載下傳三個檔案svnindex.xsl, svnindex.css 和 menucheckout.ico 放到的文檔根目錄中(C:\ApacheGroup\Apache2.2\htdocs)
重新開機apache,在浏覽器中輸入http://localhost/svn/,根據提示輸入上面建立的使用者名和密碼便可以看見svn的根目錄,目前一個代碼倉庫也沒有。
5.倉庫的設立及命名規則
下面以vpm項目為例來說明倉庫建立的過程:
把C:\Subversion\bin增加到環境變量的path中,然後運作cmd,cd到D:\cvsroot
執行指令建立一個新的倉庫:svnadmin create rep_vpm
用浏覽器打開http://localhost/svn/ 便可以看到剛剛建立的代碼倉庫rep_vpm
倉庫的設立采用一個項目一個倉庫,即每新增一個項目就建立一個代碼倉庫,倉庫的命名規則為:rep_+項目名稱。
在倉庫下面設立三個檔案夾:trunk/,tags/,branches/,(通過SVN用戶端建立)
這三個目錄的用途如下:
trunk主分支,tags裡程碑釋出,branches分支開發
6.權限控制
權限控制主要是通過配置檔案d:\svnroot\svn.accessfile來實作。
[/]
* = rw
表示認證通過的任何使用者都擁有對所有倉庫的讀寫權限,現在我們需要修改權限控制規則,把svn.accessfile改成如下:
[groups]
admin = jeffrey
vpm_users = jeffrey, howard
[/]
* = r
[rep_vpm:/]
@admin = rw
@vpm_users = rw
* =
上面的配置表示
(1).建立了兩個group,admin和vpm_users,其中admin有一個使用者jeffrey,vpm_users有兩個使用者jeffrey和howard
(2).任何人對根目錄隻有隻讀權限
(3).admin和vpm_users組的使用者對倉庫rep_vpm有讀寫權限,其他人沒有任何權限
接下來建立使用者,jeffrey之前已經建立了,用以下指令建立兩個使用者howard和gavin
htpasswd svn.passwd howard
htpasswd svn.passwd gavin
這樣,jeffrey, howard, gavin 都有對根目錄/svn/的隻讀權限,jeffrey,和howard對rep_vpm有讀寫權限,gavin對倉庫rep_vpm沒有任何權限,如果要讓gavin有倉庫rep_vpm有讀寫權限,就把gavin加入到vpm_users組中即可。