我一直在尝试设置Apache来访问Subversion存储库,例如:


利用存储库集合,即SVNParentPath指向包含存储库的文件夹。
使用SVNMasterURI透明地将提交代理到主服务器。


我最初的尝试是这样的:

<Location "/collection">
    DAV svn
    SVNParentPath /path/to/collection
    SVNMasterURI http://master/collection
    SVNListParentPath on
    AuthzForceUsernameCase Lower
    AuthzSVNAccessFile /path/to/access-file
</Location>


使用此配置,透明代理将按预期方式提交工作。但是,当我尝试浏览到http://svn-server/collection/时,出现403 Forbidden,并且错误日志中包含The URI does not contain the name of a repository.

Trailing slashes在这里似乎非常重要,因此在尝试了LocationSVNParentPathSVNMasterURI的所有斜杠组合后,我发现:


为了使SVNListParentPath工作,Location必须带有斜杠。
为了使SVNMasterURI正常工作,Location不得带有斜杠。


所有这些都在Ubuntu 12.04,Apache 2.2.22,mod_dav_svn 1.6.17dfsg-3ubuntu3上进行。

我的问题是:

有没有办法同时使用SVNListParentPathSVNMasterURI

最佳答案

如果您愿意这样做,请将Subversion和mod_dav_svn升级到1.8.10版或更高版本。同时,“尾随斜杠错误”已得到修复,并且SVNListParentPath与<location /collection>可以正常工作。

我可以确认,SVNMasterURI对<location>非常敏感。确保主存储库和从存储库中的路径相同。

07-26 09:09