我可以通过 SSH 访问一台服务器,并尝试在该服务器上创建存储库。我不知道 apache 是否为此正确设置,但该服务器确实有 svn,并且确实如此mod-dav-svn
。无论如何,我通过 ssh 进入服务器:
-bash-3.00$ mkdir httpdocs/svn
-bash-3.00$ svnadmin create httpdocs/svn
我检查仓库是否创建成功(确实如此),然后使用 tortoise svn 从http://server.com/svn/。
返回的错误是Repository moved permanently to 'http://server.com/svn/'; please relocate
。
这说明什么?
请注意,我没有服务器的 root 访问权限,系统管理员已经睡觉了。此时,需要采取哪些步骤才能启动并运行 repo?Apache 中的虚拟主机设置?.htaccess 呢?什么都可以?
更新
我不确定现在是否还会关注这个问题,但是:系统管理员已将其添加到我的虚拟主机的 conf 文件中,
<Location /svn>
DAV svn
SVNParentPath /var/www/vhosts/domain/svn
AuthType Digest
AuthName "Subversion Repository"
AuthUserFile /etc/myauthfile
Require valid-user
</Location>
已根据用户情况进行了相应设置/etc/myauthfile
。我确保将存储库设置在 httpdocs 和 httpsdocs 目录之外,以免与任何其他命名空间冲突 - 我转到主目录中的 /svn 并创建了一个存储库。我尝试从我的计算机中将其检出,然后--
svn: OPTIONS of 'http://domain/svn': 200 OK (http://domain)
这令人困惑...尝试通过浏览器访问它会导致 404。
我还遗漏了什么吗?
答案1
您的主要问题在于您为存储库选择的位置 - 您在 public_html 文件夹中创建了存储库。
管理员添加到 apache 配置中的额外<Location></Location>
内容是正确的,但是它需要指向 Apache 尚未处理的目录。
您只收到 404 和 200 响应的原因是因为 Apache 通过其常规“网站帽”拦截了您的 http SVN 请求,而不是将请求传递给 SVN。
将存储库移动到 Apache 常规控制之外的其他目录,并<location>
更新位以指向存储库的新位置。
答案2
这是 Subversion 网站上的常见问题解答。如果没有权限重新配置 Apache,则无法通过 http 启用 Subversion 访问:
http://subversion.tigris.org/faq.html#http-301-error
http://svnbook.red-bean.com/en/1.5/svn.serverconfig.httpd.html