我一直在尝试设置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在这里似乎非常重要,因此在尝试了
Location
,SVNParentPath
和SVNMasterURI
的所有斜杠组合后,我发现:为了使
SVNListParentPath
工作,Location
必须带有斜杠。为了使
SVNMasterURI
正常工作,Location
不得带有斜杠。所有这些都在Ubuntu 12.04,Apache 2.2.22,mod_dav_svn 1.6.17dfsg-3ubuntu3上进行。
我的问题是:
有没有办法同时使用
SVNListParentPath
和SVNMasterURI
? 最佳答案
如果您愿意这样做,请将Subversion和mod_dav_svn升级到1.8.10版或更高版本。同时,“尾随斜杠错误”已得到修复,并且SVNListParentPath与<location /collection>
可以正常工作。
我可以确认,SVNMasterURI对<location>
非常敏感。确保主存储库和从存储库中的路径相同。