一、整合Apache+SVN
1、安装:
(1) 安装httpd-2.2.21-win32-x86-openssl-0.9.8r.msi,安装目录随意;
(2) 安装Setup-Subversion-1.6.15.msi(这个是SVN的服务器端),安装目录随意;
(3) 安装TortoiseSVN-1.6.12.20536-win32-svn-1.6.15.msi(这个是SVN的客户端),可选择默认安装(即一路选择下一步);
(4) 安装LanguagePack_1.6.12.20536-win32-zh_CN.msi(这个是SVN的客户端的中文包,用于汉化SVN的客户端,可选择安装)
2、整合的配置:
(1) 复制Subversion\bin目录中的下面这六个文件到Apache2.2\bin中去
intl3_svn.dll libdb44.dll
libsvn_delta-1.dll libsvn_fs-1.dll
libsvn_repos-1.dll libsvn_subr-1.dll
(2) 复制Subversion\bin中的mod_authz_svn.so、mod_dav_svn.so这两个文件到Apache2.2\modules目录中去。
(3) 修改Apache的配置文件httpd.conf(这个文件在Apache2.2\conf目录中):打开这个文件,找到
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
然后去掉这两行前面注释符合“#”,再在所有LoadModule语句的最后添加一下下面这两行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
(4) 建立存放库的目录,目录名可以你自己随意起,也可以放任意盘,我的是在C盘目录下新建目录svn;
(5) 创建SVN版本库(有两种方式):1在第(4)步创建的存库目录中,新建一个文件夹,然后右击该文件夹à选择“TortoiseSVN”à选择“在此创建版本库”,会有创建成功提示;2点击开始à运行à输入cmd,回车,在cmd窗口中进入到到Subversion的bin目录下,输入“Svnadmin.exe create C:\svn\test”(其中svn为第(4)步创建的存库目录,后面的test可随意更换),回车,执行完毕,打开C:\svn查看是否生成test文件夹,打开test,生成文件如下,即SVN版本库创建成功。(注:以上的1、2为创建版本库的两种方式,选择其中一种方式即可)
(6) 添加svn用户:在cmd窗口中进入到Apache2.2\bin目录中,输入“htpasswd –c C:\svn\pwd admin”(其中svn为存库根目录,pwd为文件名,可任意取,用于存放所要创建的用户名和密码,admin为新创建的用户名),回车,提示输入密码,回车,提示重复输入密码,回车,如下图所示:
然后打开C:\svn,查看是否生成pwd文件,如果存在此文件即成功(注:我之前参考过很多资料,有的直接把这个用户文件pwd放到版本库里面(即前面创建的test文件夹),个人认为用户文件最好不要放到版本库里,放在存库的根目录比较好)
说明:使用-c参数来创建第一个用户
如果需要再创建用户的时候就不用-c参数,而是用-m参数,因为文件passwd已经创建。
htpasswd –m D:\svnroot\passwd quan //添加用户quan,并且写进passwd文件
htpasswd –m D:\svnroot\passwd phpuser //添加用户phpuser,并且写进passwd文件
(7) 配置访问权限authz文件:在存库根目录svn中新建文本文档,命名为authz,用记事本程序打开输入如下内容(注:中文为解释内容,最好不要写进authz文件里):
[groups]
#这里是设置分组,如果一个组里有多个用户,则多个用户用逗号分隔,如:java=phpuser,quan
admin=admin
test=admin
[/]
#这里设置根目录的访问权限,[/]代表根目录,rw代表全权管理,可读可写
@admin = rw
[test:/]
#对test版本库做权限配置,允许test组的所有用户读写test库
@test = rw
(8) 再次修改Apache的配置文件httpd.conf:打开此文件,在文件的最后添加如下代码:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath "C:/svn" //这“”里面输入的是svn库的根目录,按个人情况而定
AuthType Basic
AuthName "Subversion Please enter yourlogin information"
AuthUserFile "C:/svn/pwd" //这“”里面输入的是经apache创建的用户密码文件路径
AuthzSVNAccessFile "C:/svn/authz" //这“”里面输入的是用户权限分配文件路径
Require valid-user
</Location>
(9) 重启apache,注意右下角是否出现如下图所示的字样,如果没有,请关闭此窗口再重新打开即可(前提是apache启动正常)。
3、验证测试:
(1)Web访问:打开浏览器,在地址栏中输入http://localhost/svn/test,回车后会弹出登录对话框,输入用户名和密码,登录后出现如下图所示即OK!
(2)客户端应用测试
1将文件加入svn管理:
l 新建一个文件夹,右击选择check out(注check out 后可以添加新内容,然后check in 保留了一个影像,到时可以还原的)
l 在该文件夹中建立文件和文件夹
l Commit
l 进入网页http://localhost/svn/test能够看到版本1
2编辑修改:
l 编辑,修改.删除文件或修改文件内容
l 选择svn update和svn commit
l 进入网页http://localhost/svn/test能够看到版本2
3回到历史版本:
右击文件夹,TortoiseSVNà更新至版本(updateto revision)à单击“版本”(revision)单选按钮à输入1,回到1版本
附:其他解释:
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath "D:/svnrepo"
#SVNPath "D:/svnrepo/test"
####################认证的类型
AuthType Basic
#################### 认证的名称,显示于登录提示框
AuthName "Subversion 资源库,请登录 !"
########## 存储用户登录信息的文件
AuthUserFile D:\svnrepo\passwd
#################### 限定各个用户或组在版本库中目录的访问权限
AuthzSVNAccessFile D:\svnrepo\svnaccessfile
############# 让所有用户对版本库都有读的权限而只有特定的用户才有写的权限
Require valid-user
</Location>