我在服务器上配置了两个存储库站点。第一个是/home/svn/repoA
,第二个是/home/svn/repoB
。
我在Apache上使用以下信息构建了一个虚拟主机:
<Location />
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Servidor SVN"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
现在这个URL,我可以使用http://svn.mydomain.com/repoA
和http://svn.mydomain.com/repoB
访问服务器,但我想让repoB变为私有,只允许使用先前使用htpasswd创建的用户和密码进行访问在dav_svn.passwd。
如果我取出<LimitExcept GET PROPFIND OPTIONS REPORT>
行,并且它是更接近的标记,它会询问用户和密码,但是在两个存储库中。
有没有办法让一个只能用于匿名和读/写的已登录用户,而第二个存储库只有已登录用户的读/写权限?
答案 0 :(得分:2)
你用了多少资源来实现这一目标?我知道有一本免费的Subversion书籍(Subversion版本控制),里面有答案:
Apache authn / authz:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz
基于路径的authz:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html
答案 1 :(得分:1)
我只有2个位置块。 RepoA应该在Apache位置块中打开“Satisfy Any”以进行匿名只读访问,并使用相应的Auth文件进行匿名访问。 RepoB的Auth文件应该拒绝匿名访问。
即
Apache repoA conf
<Location /repoA>
DAV svn
SVNPath /home/svn/repoA
AuthType Basic
Satisfy Any
AuthName "Servidor SVN"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /path/to/authFileA
</Location>
authFileA
[/]
* = r
[/repoA]
* = r
mark = rw
bill = rw
Apache repoB conf
<Location /repoB>
DAV svn
SVNPath /home/svn/repoB
AuthType Basic
AuthName "Servidor SVN"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /path/to/authFileB
</Location>
authFileB
[/]
* =
[/repoB]
* =
mark = rw
bill = rw