我的 EC2 实例上有 2 个 svn 存储库。
它们位于/ebs/svn/repo1
&中/ebs/svn/repo2
。
我已经创建了一个域别名svn.mydomain.com
,以指向上面的父目录(/ebs/svn
)。
我想要使用以下 URL 格式访问上述每个 repo:
svn.mydomain.com/repo1
svn.mydomain.com/repo2
目前我有一个使用以下 vhosts 配置的 repo1。
<VirtualHost *:80>
ServerName svn.mydomain.com
ServerAlias svn.mydomain.com
ErrorLog /var/www/html/log/svn.mydomain.com-log
<Location "/" >
DAV svn
SVNPath /ebs/svn/repo1
AuthType Basic
AuthName "SVN - Private - Repos"
AuthUserFile /ebs/svn/login/svn-auth-conf
Require valid-user
</Location>
</VirtualHost>
问题是,我只能repo1
通过上述 vhosts 配置进行访问。
我想以以下格式访问这两个存储库:
svn.mydomain.com/repo1
svn.mydomain.com/repo2
我需要做哪些更改才能通过其目录访问我的 svn 存储库?
答案1
因为您已经设置了SVNPath
指令,所以您已经“硬编码”了路径:
SVNPath /ebs/svn/repo1
尝试使用SVNParentPath
指令来配置将保存所有存储库的“顶级”目录。将上面的行替换为以下内容:
SVNParentPath /ebs/svn/
如果您想允许用户在访问时查看所有可用存储库的列表svn.mydomain.com
,您还应该添加以下行:
SVNListParentPath on
这将允许列出您的所有存储库。否则,将显示“禁止”页面,svn.mydomain.com
而不是存储库列表。
总而言之,这是一个完整的位置块示例:
‹Location "/"›
DAV svn
SVNParentPath /ebs/svn/
SVNListParentPath On
SSLRequireSSL
AuthType Basic
AuthName "svn ebs"
AuthUserFile conf/svnpasswd
Require valid-user
‹/Location›
答案2
我做了什么:(正如@Oldskool 所回答的)
<VirtualHost *:80>
ServerName svn.mydomain.com
ServerAlias svn.mydomain.com
ErrorLog /var/www/html/log/svn.mydomain.com-log
<Location "/" >
DAV svn
# Delete SVNPath!
SVNParentPath /ebs/svn/ # add this!
SVNListParentPath on #Lists all the repos!! coool stuff! :D
AuthType Basic
AuthName "Private - Repos"
AuthUserFile /ebs/svn/login/svn-auth-conf
Require valid-user
</Location>
</VirtualHost>
谢谢@Oldskool!
老方法
这是我发现的一种较旧的方法,但对于多个存储库,您必须添加多个标签。(使用上面@oldSkool 的答案,效果更好!)
(注意到了<Location "/repo1">
,所以基本上,为每个 repo 添加一个新位置。
<VirtualHost *:80>
ServerName svn.mydomain.com
ServerAlias svn.mydomain.com
ErrorLog /var/www/html/log/svn.mydomain.com-log
<Location "/repo1" >
DAV svn
SVNPath /ebs/svn/repo1
AuthType Basic
AuthName "Private - Repo1"
AuthUserFile /ebs/svn/login/svn-auth-conf
Require valid-user
</Location>
<Location "/repo2" >
DAV svn
SVNPath /ebs/svn/repo2
AuthType Basic
AuthName "Private - Repo2"
AuthUserFile /ebs/svn/login/svn-auth-conf
Require valid-user
</Location>
</VirtualHost>