参考自
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