參考自
http://www.cnblogs.com/blueskyc/articles/1376982.html
http://blog.csdn.net/zhuxiaowenlinda/article/details/4320094
http://www.blogjava.net/hadeslee/archive/2008/03/12/185788.html
http://blog.csdn.net/kimizhou_blog/article/details/7481959
一.安裝Apache
安裝windows版的Apache,我用的2.0.55版(apache_2.0.55-win32-x86-no_ssl.msi), 瀏覽器輸入http://localhost 出現正確提示證明Apache安裝完畢,我的Apache主目錄(D:\Program Files (x86)\Apache Group\Apache2)
二. 安裝Subversion (svn-1.2.3-setup.msi),(D:\Program Files (x86)\Subversion)
安裝的時候選擇綁定Apache2.0.0,同時將Subversion主目錄下的bin目錄中的mod_dav_svn.so、mod_authz_svn.so拷貝到Apache主目錄下的modules目錄中。
*注意Apache的版本應該和Subversion版本匹配,否則會出現各種問題,我的這兩個版本測試通過,還有我還試了一個搭配爲,Apache2.2.25和Subverion1.8.5, httpd-2.2.25-win32-x86-no_ssl.msi, Setup-Subversion-1.8.5.msi
三. Apache與Subversion集成
1. 修改Apache主目錄下的conf下的httd.conf
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
修改爲:
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
* 此刻可以先重啓Apache服務,即restart命令,看Apache是否識別出剛纔拷貝的so文件,Apache2.2版本可能會無法識別so文件,可能是要和subversion的版本對應的關係。假如Apache服務無法啓動,請查看其主目錄下logs文件夾下的error.log,看看其具體錯誤日誌。
2.同時在此文件中配置Apache中與SVN中的交互
<Location /svn> #意味着可以通過像這樣的URL(http://myIP/svn)來訪問Subversion版本庫
DAV svn # 告訴Apache哪個模塊負責服務像那樣的URL--在這裏就是Subversion模塊
SVNParentPath C:\svn_repo #告訴Subversion在目錄C:\svn_reop下尋找版本庫,即svn數據倉庫,此刻就是普通一文件夾,自己創建
AuthType Basic #啓用基本的驗證,使用用戶名/密碼驗證
AuthName "test123" #數據倉庫的現實名稱
AuthUserFile c:\svn_repo\passwd #passwd問密碼和用戶文件,用來驗證用戶的用戶名及密碼,此文件命名隨意(passwd),後面創建
AuthzSVNAccessFile C:\svn_repo\svnaccessfile #權限控制文件,限定各個用戶或組在版本庫中目錄的訪問權限,此文件命名也是隨意的,後面創建
Require valid-user #限定用戶只有輸入正確的用戶名及密碼後才能訪問這個路徑
</Location>
3. 創建passwd和svnaccessfile文件
切換到Apache主目錄下的bin
bin\htpasswd -c passwd <username>
比如: bin\htpasswd -c c:\svn_repo\passwd admin
命令分析:
c:\svn_repo\passwd 表示會在:c:\svn_repo目錄下創建一個passwd文件
admin 表示用戶名
當要增加一個新用戶叫 test
bin\htpasswd -m c:\svn_repo\passwd test
即不覆蓋剛纔創建的passwd,而只是在文件後面多添加一條用戶記錄
自身創建一個普通文件命名爲svnaccessfile,輸入以下內容
#組配置 組 = 用戶名
[groups]
super_admin = admin
user = test
# 爲所有庫指定默認訪問規則
# 根目錄下,超級管理員具有讀寫權限,其他人沒有任何權限
[/]
@super_admin = rw
* =
# 爲test1版本庫制定權限
#admin組擁有讀寫權限
#user組只有讀取權限
#爲了便於理解,故意命名爲test1,這樣瀏覽器也可以通過http://myIP/svn/test1 訪問svn倉庫,test1文件夾後面會創建,冒號後面代表test1版本庫(倉庫)的根目錄,當然也可以對倉庫的任意子目錄設置權限比如[test1:/childTest1],對於test1倉庫下的childTest1子目錄設置權限對於childTest1子目錄的創建不需要在服務器上創建,有權限的客戶端checkout後,再創建這個子目錄再次commit後即可。
[test1:/]#子目錄權限繼承父目錄的權限,此處超級管理員仍然具有讀寫權限。
@user = r
具體版本庫權限設置參加另一篇博客: http://topinking.iteye.com/blog/342831
cmd進入Subversion中的bin下,注意是Subversion的子目錄, svnadmin create c:\svn_repo\test1
重啓apache服務,瀏覽器輸入http://myIP/svn/test1 ,輸入正確的用戶名密碼,看是否能看到svn倉庫中的文件
四. 安裝TortoiseSVN,svn的客戶端(1.6.12.20536,64bit)
TortoiseSVN的使用參見 http://wenku.baidu.com/link?url=JuN_8wcDRdCKtspro_q3uLjbrDnbddqhH5PjREvgquJXxZrLZtYJAtlpjj6MDXTWOKNwnnmopwAyNjfF1Ghg_kqEa-nW68mp_kL8g51I7Mm
附錄:
另一種Apache和svn的配置如下
Apache的conf/httd.conf
<Location /svn/test1>#直接指向子目錄
DAV svn
SVNListParentPath on#通過瀏覽器訪問時是否顯示父目錄,即..
SVNPath c:/svn_repo/test1#直接指向test1版本庫的目錄
AuthzSVNAccessFile c:/svn_repo/test1/conf/svnaccessfile
#Satisfy Any #最好不要加上
Require valid-user
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile c:/svn_repo/test1/conf/passwd
Require valid-user
</Location>
svn的權限控制文件 svnaccessfile:
[groups]
super_admin = admin
user = test
# 爲test1版本庫制定權限
[/]#此處根目錄爲版本庫test1的根目錄
@super_admin = rw
@user = r