如何在 Windows 中设置 Subversion 与 Apache (快速参考)






3.88/5 (13投票s)
这是一份快速用户指南,献给那些没有时间学习如何设置 Apache 和 Subversion 的人。
引言
我决定写这篇文章,是为了节省那些必须在 Windows 机器上安装和设置 Subversion,但又不知道如何操作,也没有时间在网上搜索任何信息的人的时间。
我花了整整两天的时间和巨大的努力才弄清楚 Subversion 是怎么回事以及如何让它工作。我问了我大学计算机科学系的一个同事,他在做一个并行项目,他在 Linux 服务器上设置 SVN 和 Apache 花了多长时间。他说他花了一个月!!!:) 嗯,无语了。
让我们直奔主题,我们时间不多了。
必备组件
首先,我们需要下载 SVN 和 Apache。
- Subversion v.1.4
- Apache v.2.059
Subversion
将 Subversion 安装到任何目录,然后将 bin 子目录添加到环境变量中。例如:如果我们把 svn 安装在 C:\programs\programming\svn-win32-1.4.0,那么请转到 开始 -> 设置 -> 控制面板 -> 系统。
点击 高级 选项卡,然后选择 环境变量。
下一步是创建一个目录,它将成为我们所有源代码控制存储库的根目录。
- 打开命令提示符。
- 假设我们希望我们的根目录名为 c:\svnroot。然后,在命令提示符下或使用 Explorer 创建此目录。
- 使用以下命令在 svn 根目录下创建存储库
- svnadmin create c:\svnroot\test1
- svnadmin create c:\svnroot\test2
Apache 服务器
现在,我们可以安装 Apache 服务器了。
安装完成后,转到 Subversion 安装目录下的 bin 目录,找到两个扩展名为 *.so 的文件,并将它们放入 (Apache)/modules 目录。这两个文件是 mod_authz_svn.so 和 mod_dav_svn.so。
转到 Apache 安装目录下的 conf 子目录,并在任何文本编辑器中打开 httpd.conf 文件。
添加以下行
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
之后,添加以下块
<Location /svn/>
DAV svn
SVNParentPath c:/svnroot/ #specify the root for repositories
#http://www.archivesat.com/CVS_developers_help/thread45479.htm
post which discuss why you need to specify /svn/ and not /svn
#list repositories
SVNListParentPath on
# our access control policy
AuthzSVNAccessFile bin/apachesvnauth #authentication file
#path where policy is written for each user
AuthType Basic #type of authentication
AuthName "Subversion repository" #the name of the authentication
#and the name of repository realm
AuthUserFile bin/apachesvnpasswd #the name of the
#file with user passwords values
Require valid-user #permit to log-in only for authorized users
</Location>
- <Location /svn/> - 如果你在浏览器中输入类似这样的内容:https://:8080/svn/,那么 Apache 将知道如何使用
SVNParentPath
找到你的根存储库。 - SVNParentPath c:/svnroot/ - 指定存储库的根目录。
- SVNListParentPath on - 允许使用 https://:8080/svn/ 查看存储库列表。
- AuthzSVNAccessFile bin/apachesvnauth - 身份验证文件路径,其中为每个用户提供策略。该文件存储在 Apache 的 bin 子目录中。
- AuthType Basic - 身份验证类型。
- AuthName "Subversion repository" - 身份验证的名称和存储库域的名称。
- AuthUserFile bin/apachesvnpasswd - 包含用户密码值的文件的名称,存储在 Apache 安装的 bin 子目录中。
- Require valid-user - 只允许授权用户登录。
构建密码文件
我们使用 AuthUserFile bin/apachesvnpasswd 条目,它告诉 Apache 在 Apache 安装目录下的 bin 子目录中查找密码文件。我们需要构建这个文件。使用命令提示符进入该目录并键入以下命令
htpasswd.exe -c apachesvnpasswd user1
系统会提示你输入用户 user1 的密码,然后在 bin 子目录中创建 apachesvnpasswd 文件。要添加另一个用户,只需键入相同的命令而不带 -c,然后提供另一个用户名。
htpasswd.exe -c apachesvnpasswd user2
注意:由于我们使用了 Require valid-user 参数,因此只有我们创建的用户才能登录我们的存储库。
构建身份验证文件
以下块是身份验证文件的一个示例
[/] * = r [test1:/] user1 = rw user2 = [test2:/] user1 = r user2 = rw
解释
- [/] * = r - 允许所有人读取所有存储库
- [test1:/] - 为 user1 提供对存储库 test1 的读写权限,而 user2 无法读写
- [test2:/] - user1 可以从存储库 test2 读取,而 user2 拥有完全访问权限
运行 Apache
理论上,我们已经到了可以运行 Apache 并测试我们的 Subversion 的阶段了。所以启动 Apache,打开网络浏览器并输入类似这样的内容:https://:8080/svn/。
如果没有出现任何错误,系统将提示你输入用户名和密码。
输入你创建的用户名和密码,然后按确定。你将看到以下页面