Apache+Subversion+TortoiseSVN版本库创建
软件版本
Apache:Apache-2.2.11-win32-x86-OpenSSL-0.98i.msi
Subversion:Subversion-1.5.6.msi
Tortoise:TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi
软件安装
Apache:
默认安装,其中server,domain都直接写IP。
Subversion:
默认安装,其中选择支持Apache2.2。
TortoiseSVN
默认安装,安装完后重新启动电脑,进行图标刷新工作。
软件配置及检测
l Apache
1. 修改Apache配置文件httpd.conf文件,修改listen端口为8080,否则和IIS80端口冲突(前提是您安装了IIS,否则可以忽略这一步)。
2. 访问Apache,http://localhost:8080,或者http://127.0.0.1:8080/,出现正常工作页面“It works!”,否则重新安装Apache。
l Subversion
1. 命令格式下进入subversion中的bin目录
2. 创建版本库svnadmin create E:/svn
3. 运行版本库svnserve –r –d E:/svn
4. 在TortoiseSVN版本库浏览中输入 svn://localhost/svn,如果可以看到版本库,则Subversion安装正确。
l TortoiseSVN
1. 该软件为客户端访问工具,默认安装,没有不正常的时候,至少我没有见过。
版本库建立
l Apache预先配置
1. 为了使 Subversion 与 dav 模块通信,需要安装 mod_dav_svn 插件,可以在 Subversion 的安装目录中找到,将其拷贝到 Apache 安装目录的 modules 文件夹下。具体为:Subversion的安装目录(如C:/developertools/Subversion),找到文件 mod_dav_svn.so和mod_authz_svn.so,拷贝这些文件到Apache的模块目录,(例如:C:/developertools/Apache Group/Apache2/modules)。
2. 配置 Apache 的 httpd.conf 文件,让 Apache 在启动的时候加载上述模块。
需要添加的内容如下:
去除下列头部#
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
其实不需要在文件中查找,把上述四条语句直接增加到文件尾部即可。
3. 启动Apache,如Apache monitor下可以看到DAV和SVN则模块正常加载。
l 注意
在版本库中conf文件夹下三个配置文件是使用Subversion直接运行版本库来进行访问控制的文件(格式为svn方式),使用Apache来运行版本库是使用Http来进行版本控制的,使用的访问控制文件与那三个文件无关,网上的好多资料把二者混为一谈,实不可取。
l 单版本库
这种版本库意味一个文件下只有一个版本库,例如E:/SVN本身就是一个版本库
1. 版本库建立可以使用Subversion或者TortoiseSVN建立
Subversion命令:svnadmin create E:/svn
在SVN文件夹中点击鼠标右键选择Tortoise—Create Repository here来建立(可视化方便)
2. 在Apache 的 httpd.conf 文件尾部配置访问路径
<Location /repos>
DAV svn
SVNPath E:/SVN
AuthType Basic
AuthName "Aisino Vehicle MIS Repos"
AuthUserFile E:/SVN /passwd
AuthzSVNAccessFile E:/SVN /authz
Require valid-user
</Location>
其中所有路径都为绝对路径, passwd为Apache bin目录下htpasswd来创建。
具体创建命令为:
创建文件以及用户test
htpasswd -c E:/SVN /passwd test
添加新用户
htpasswd -m E:/SVN /passwd Newusername
其中authz可以从版本库中Conf文件夹下复制生成。
具体修改格式为
[groups]
admin = test
[/]
@admin = rw
* = r
全部配置完后,在IE或者Tortoise软件可以通过http://192.168.10.207:8080/repos来访问测试。
l 多版本库
这种版本库是指一个文件夹下可以拥有多个版本库,如文件夹SVN下有俩个文件夹testx和testy分别为独立的版本库
想要指定多个版本库,可以用多个 Location 标签,使用类似单版本库模式来建立,也可以使用 SVNParentPath 代替 SVNPath方式来建立。
1. 创建版本库与单版本库方式相同。D:/SVN下有2个版本库testx和testy。
2. 在Apache 的 httpd.conf 文件尾部配置访问路径
<Location /svn>
DAV svn
SVNParentPath D:/SVN
AuthzSVNAccessFile D:/SVN/authz
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:/SVN/passwd
</Location>
其中passwd产生方式如同单版本库方式,authz文件稍有不同,具体为
[groups]
admin = test
[testx:/]
@admin = rw
[testy:/]
@admin = rw
其中[testx:/]为每个版本库的访问控制。
全部配置完后,在IE或者Tortoise软件可以通过http://192.168.10.207:8080/svn/testx来访问测试。
附录
l httpd.conf Location具体格式说明为:
<Location /svn> //Subversion版本库的URL是http://Server/svn/
DAV svn //告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块
SVNListParentPath on //显示所有SVNParentPath下的版本库。
SVNParentPath D:/SVN //告诉Subversion需要查看的版本库位于D:/SVN之下
AuthType Basic //激活基本认证,就是用户名/密码
AuthName "Subversion repositories" //认证对话框的信息
AuthUserFile passwd //指定使用的密码文件
AuthzSVNAccessFile svnaccessfile //Subversion版本库的访问控制文件的路径
Require valid-user //只有输入了正确的用户/密码的用户可以访问URL
</Location>
l 创建密码文件
打开命令行提示符(DOS),来到apache2目录(例如C:/developertools/ApacheGroup/Apache2/bin)通过输入下面的命令创建文件 :
Htpasswd –c passwd john
//创建一个文件名为passwd的密码文件,并添加一个用户,系统会提示输入密码和密码确认,完成之后新的用户名的密码就被添加至passwd文件里边,密码采用MD5进行加密。
继续往文件里边添加用户和密码
Htpasswd passwd peter
.(注:将产生的文件存放到你配置的AuthUserFile的路径,这里是AuthUserFile C:/developertools/Apache Group/Apache2/conf/passwd)。
也可以直接说明位置进行密码文件创建
Htpasswd.exe –c e:svn/passwd test
Htpassws.exe e:/svn/passwd test2
创建的密码文件就是httpd.conf 文件中AuthUserFile的具体文件,直接写绝对路径即可。