URL:http://www.iusesvn.com/
1.安裝Apache2.2.9(http://httpd.apache.org/download.cgi)
選擇:
Win32 Binary without crypto (no mod_ssl) (MSI Installer): apache_2.2.9-win32-x86-no_ssl-r2.msi [PGP] [MD5] 在安裝過程輸入資訊前兩項Network Domain和Server Name中都輸入localhost,下面那個email就随便了,如果機器安裝了iis并且啟動中,要先把iis服務停掉。否則會和apache的監聽端口沖突的。
2.下載下傳SVN1.5(如果是1.4.6版本則有exe二進制安裝檔案,而1.5目前隻有source版,解壓下來即可用)
(我安裝的是1.5.5版本:http://subversion.tigris.org/files/documents/15/44589/svn-win32-1.5.5.zip)
(先安裝了之前的版本:1.4.6,然後弄1.5.5的拷過去覆寫安裝的目錄檔案)
将/svn安裝路徑/bin中的檔案mod_dav_svn.so和mod_authz_svn.so,将它們拷貝到Apache的modules目錄,複制%SVN_HOME%/bin/libdb44.dll、libeay32.dll、以及 ssleay32.dll到%APACHE_HOME%/bin
然後,使用記事本之類的文本編輯器編輯Apache的配置檔案/conf/httd.conf做如下修改:
去掉以下行的注釋(将開頭的#删除):
#LoadModule dav_module modules/mod_dav.so
在LoadModule節的最後添加以下兩行:
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
* 完成以上步驟也就完成了Apache2.2.9 + svn1.5的基本配置
現在關閉Apache伺服器,再重新開機,會發現Apache控制台的狀态欄出現Subversion的資訊
如:Apache/2.2.9(Win32) SVN/1.5 DAV/2
這就說明已經成功的将Subversion內建到了Apache當中
3.下載下傳并安裝TortoiseSVN(http://tortoisesvn.tigris.org/)
(我安裝的是1.5.7.15182版本)
根據向導安裝好後,建立版本庫D:/SVN版本庫/repository,右鍵->TortoiseSVN->Create Repository here...“, 然後可以選擇版本庫模式, 這裡使用預設即可, 然後就建立了一系列目錄和檔案。
4.修改Apache的配置檔案
在Apache的配置檔案/conf/httd.conf檔案的尾部添加

<Location /svn>
#這裡指定了倉庫的通路路徑
DAV svn
#指定倉庫在硬碟上的實際位置
SVNPath D:/SVN版本庫/repository
#認真方式為基本方式
AuthType Basic
#認證視窗的标題
AuthName "Subversion Repository"
#認證使用者配置檔案實際位置
AuthUserFile "D:/SVN版本庫/passwords.auth"
#認證權限配置檔案實際位置
AuthzSVNAccessFile "D:/SVN版本庫/access.auth"
#設定為需要進行認證
Require valid-user

</Location>
設定解釋<Location /svn>意思是Subversion版本庫的URL是http://MyServer/svn/DAV svn告訴Apache是哪個子產品響應那個URL的請求-此刻是Subversion子產品。SVNListParentPath on對于Subversion1.3或者更高版本,這個訓示表示顯示所有SVNParentPath下的版本庫。SVNParentPath D:/SVN告訴Subversion需要檢視的版本庫位于D:/SVN之下AuthType Basic激活基本認證,就是使用者名/密碼AuthName "Subversion repositories"用來說明何時彈出要求使用者輸入認證資訊的認證對話框AuthUserFile passwd指定使用的認證密碼檔案AuthzSVNAccessFile位置Subversion版本庫的通路控制檔案的路徑Require valid-user指定隻有輸入了正确的使用者/密碼的使用者可以通路URL
* 接下來我們建立認證所需的兩個檔案:使用者檔案和權限檔案到D:/SVN版本庫下建立檔案 passwords.auth和access.auth(可以用記事本建立後修改檔案名)
* 配置認證使用者檔案passwords.auth,内容如下:
tom:tom
cat:cat
hello:world
在這裡密碼都沒有加密,如果需要設定密碼加密,可以用Apache安裝目錄下bin目錄中的htpasswd.exe程式生成,具體生成方法如下:
我的Apache安裝路徑是:
D:/Program Files/Apache Software Foundation/Apache2.2/
打開指令視窗,進入到D:/Program Files/Apache Software Foundation/Apache2.2/bin,
在指令行中使用如下指令:htpasswd -c D:/svnroot/passwords.auth tom
回車後會提示輸入密碼,輸入tom,再回車會提示輸入确認密碼,再次輸入tom就可以了
指令行中的參數-c表示建立一個檔案,第一次運作建立好了,再添加别的使用者的時候就
不要再使用這個參數了,如我再添加cat和hello使用者
htpasswd D:/svnroot/passwords.auth cat
htpasswd D:/svnroot/passwords.auth hello
這樣建立的使用者密碼預設使用的MD5加密,你打開檔案以後看到的可能就是如下格式:
tom:7Z/80Al6$WTqVrBgshc/Bxi6YYkUga1$apr1$
cat:kNrG459T$qfAZ7MpgpFcdd2xp25gST1$apr1$
到此我們就添加好了三個使用者tom,cat和hello,他們的密碼分别為tom,cat,world
* 配置認證權限檔案access.auth
直接在D:/svnroot下建立access.auth檔案即可,然後填入如下内容
[groups]
dev1 = tom,cat #開發使用者組1
dev2 = hello #開發使用者組2
[/]
* = r #設定所有使用者對根目錄有讀權限,即浏覽權限
[/aaa]
@dev1 = rw #設定dev1組成員對aaa目錄有讀和寫權限
@dev2 = #設定dev2組成員對aaa目錄沒有任何權限
[/bbb]
@dev1 = #設定dev1組成員對bbb目錄沒有任何權限
@dev2 = rw #設定dev2組成員對bbb目錄有讀和寫權限
[/ccc]
@dev1 = #設定dev1組成員對ccc目錄沒有任何權限
@dev2= #設定dev2組成員對ccc目錄沒有任何權限
到此我們為不同使用者分組定義了權限,大家可以使用不同的使用者
進行browse/import/checkout試驗
通路路徑為http://localhost/svn
*配置多倉庫的使用者權限
* 首先在建立一個倉庫svn2
* 在D:/svnroot目錄下首先執行D:/svnroot/mkdir svn2建立子目錄svn2
* 然後執行svnserve create D:/svnroot/svn2建立倉庫svn2
修改打開Apache安裝目錄下conf目錄中的httpd.conf檔案,将光标移到問檔案的最末端
加入的代碼修改如下:
<Location /svn>
DAV svn
#這裡将SVNPath修改為SVNParentPath,目前目錄為父目錄
#倉庫svn1和svn2在這個父目錄下
SVNParentPath D:/svnroot
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "D:/svnroot/passwords.auth"
AuthzSVNAccessFile "D:/svnroot/access.auth"
Require valid-user
</Location>
* 認證使用者檔案passwords.auth不需要做任何修改
* 認證權限檔案access.auth修改如下:
[groups]
dev1 = tom,cat #開發使用者組1
dev2 = hello #開發使用者組2
[svn1:/]
* = r
[svn1:/aaa]
@dev1 = rw #設定dev1組成員對svn1倉庫下的aaa目錄有讀和寫權限
@dev2 = #設定dev2組成員對svn1倉庫下的aaa目錄沒有任何權限
[svn1:/bbb]
@dev1 = #設定dev1組成員對svn1倉庫下的bbb目錄沒有任何權限
@dev2 = rw #設定dev2組成員對svn1倉庫下的bbb目錄有讀和寫權限
[svn1:/ccc]
@dev1 = #設定dev1組成員對svn1倉庫下的ccc目錄沒有任何權限
@dev2= #設定dev2組成員對svn1倉庫下的ccc目錄沒有任何權限
[svn2:/]
@dev1 = #設定dev1組成員對svn2倉庫沒有任何權限
@dev2= #設定dev2組成員對svn2倉庫沒有任何權限
到此我們為不同使用者分組對不同倉庫定義了權限,大家可以使用不同的使用者
進行browse/import/checkout試驗
倉庫1通路路徑為http://localhost/svn/svn1
倉庫2通路路徑為http://localhost/svn/svn2
對父目錄http://localhost/svn/,任何使用者都沒有任何通路權限
5.總結
經過以上幾個部分的介紹,初步實作了Apache2.2.9+Subversion1.5.5(for Apache2.2.X)在windows下的配置與權限設定,并且根據單倉庫和多倉庫的不同情況,進行了分别的分析與配置,基本可以滿足日常開發的需要,在實際的開發中,可以根據實際人員和項目的權限安排,進行相應的配置。
以上經過本人配置實驗,配置成功,通過TortoiseSVN 的版本浏覽器可以簡單實作了版本的管理