因为工作需要多人协作开发一个项目,参考了些资料最后选择用Subversion来进行将来的版本控制。
一、准备:
系统环境:windows 2003 sp2
Apache:apache_2.2.13-win32-x86-no_ssl.zip
(下载:http://yz.newhua.com/down/apache_2.2.13-win32-x86-no_ssl.zip
Subversion 服务器:Setup-Subversion-1.6.4.msi
(下载:http://subversion.tigris.org/files/documents/15/46485/Setup-Subversion-1.6.4.msi
Subversion 客户端:TortoiseSVN-1.6.4.16808-win32-svn-1.6.4.msi
(下载:http://jaist.dl.sourceforge.net/project/tortoisesvn/Application/1.6.4/TortoiseSVN-1.6.4.16808-win32-svn-1.6.4.msi
LanguagePack_1.6.4.16808-win32-zh_CN.msi (中文语言包)
http://jaist.dl.sourceforge.net/project/tortoisesvn/Language%20Packs/1.6.4/LanguagePack_1.6.4.16808-win32-zh_CN.msi
二、安装Apache
运行安装程序一路默认安装即可“C:\Program Files\Apache Software Foundation\Apache2.2”,如果系统已启用iis,那么80端口是被占用的,安装时请选择其它端口。也可以事后将 Apache2.2\conf\httpd.conf 文件中,“Listen 80”修改为其它端口如“Listen 90”。如果访问http://localhost:90,可以看到“It works!”即表示安装成功!
三、安装Subversion
1、首先运行安装程序一路默认安装“C:\Program Files\Subversion”,之后将“Subversion\bin”目录下的libeay32.dll、libdb44.dll、intl3_svn.dll、ssleay32.dll和mod_authz_svn.so、mod_dav_svn.so复制到“Apache2.2\modules”目录内。
2、用文本编辑器编辑“Apache2.2/conf/httpd.conf”,找到以下两行:
[color=Blue] #LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so[/color]
将它们前面的“#”去掉,然后在在LoadModule 指令的最后部分新增下面两行代码
[color=Blue] LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so[/color]
3、安装TortoiseSVN和其中文语言包,安装好后,在D盘新建一目录“d:\svn”,在此目录内再建一个Test1目录“d:\svn\test1”。然后在test1目录上点鼠标右键选择[TortoiseSVN]-[在此创建版本库](注:可先[TortoiseSVN]-[Settings]-Langugae-简体中文)。

4、再次编辑“Apache2.2/conf/httpd.conf”,在文件最后加上以下代码(可根据你实际情况修改目录)
[code]
DAV svn
SVNParentPath D:/svn
[/code]
保存后,重启Apache。访问http://localhost:90/svn/test1 可以看到下图即表示,Apache和Subversion 结合成功。

四、帐号和访问策略设置
目前的版本库没有权限限制,任何人都可以读写它,所以需要使用Apache 的工具 htpasswd来创建一些帐号然后在进行权限设置。命令行模式下进入“Apache2.2\bin”目录运行下面命令创建帐号
htpasswd d:/svnconfig/passwordfile username
这里我新建了个“d:/svnconfig”目录,专门用来放置用户和策略文件。
建好帐号后还需要修改下“Apache2.2/conf/httpd.conf”文件,把最后那段代码修改成下面
[code]
DAV svn
SVNParentPath D:/svn
AuthType Basic
AuthName “svn”
AuthUserFile D:/svnconfig/passwordfile
AuthzSVNAccessFile D:/svnconfig/accesspolicy
Satisfy Any
Require valid-user
[/code]
accesspolicy访问策略文件格式
[code]#两个分组:committers,developers
[groups]
committers = paulex richard
developers = jimmy michel spark sean \
steven tony robert
#在根目录下指定所有的用户有读权限
[/]
* = r
#追加 committers 组用户有读写权限
@committers = rw
#在 branches/dev 目录下指定 developers 组的用户有读写权限
[/branches/dev]
@developers = rw
#在 /tags 组下给予用户 tony 读写权限
[/tags]
tony = rw
#禁止所有用户访问 /private 目录
[/private]
* =
#给 committers 组用户读权限
@committers= r
[/code]