![Subversion 错误:存储库已永久移动,请重新定位](https://linux22.com/image/510109/Subversion%20%E9%94%99%E8%AF%AF%EF%BC%9A%E5%AD%98%E5%82%A8%E5%BA%93%E5%B7%B2%E6%B0%B8%E4%B9%85%E7%A7%BB%E5%8A%A8%EF%BC%8C%E8%AF%B7%E9%87%8D%E6%96%B0%E5%AE%9A%E4%BD%8D.png)
我已经在我的服务器上设置了 subversion 和 apache。
如果我通过我的网络浏览器浏览它,它可以正常工作(http://svn.host.com/reposname)。但是,如果我在我的计算机上进行结帐,则会收到以下错误:
Command: Checkout from http://svn.host.com/reposname, revision HEAD, Fully recursive, Externals included
Error: Repository moved permanently to 'http://svn.host.com/reposname/'; please relocate
我检查了 apache 的错误日志,但是它什么也没说。(现在有了 - 请参阅编辑)
我的存储库存储在:/var/www/svn/repos/
我的网站存储在:/var/www/vhosts/x/...
这是子域的配置文件:
<Location />
DAV svn
SVNParentPath /var/www/svn/repos/
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /var/www/svn/auth/svn.htpasswd
Require valid-user
</Location>
身份验证工作正常。
有谁知道这可能是什么原因造成的?
- 编辑
所以我重新启动了 apache(再次),并再次尝试,现在它给了我一个错误消息,但这并没有真正帮助。有人知道这是什么意思吗?
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] Could not fetch resource information. [403, #0]
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] (2)No such file or directory: The URI does not contain the name of a repository. [403, #190001]
-- 编辑2
如果我svn info
这样做不会提供任何有用的东西:
[root@server domain.com]# svn info http://svn.domain.com/repos/
Username: username
Password for 'username':
svn: Repository moved permanently to 'http://svn.domain.com/repos/'; please relocate
我还尝试进行本地检出(svn checkout file:///var/www/svn/repos/reposname
),效果很好(添加/提交也很好)。所以这似乎与 Apache 有关。
其他一些信息:
- 我正在运行 CentOs 5.3
- Plesk 9.3
- Subversion,版本 1.6.9(r901367)
-- 编辑 3
我尝试移动存储库,但没有任何变化。
selinux 已被禁用,所以也不是这样。
答案1
我最近有这个...但后来我忘记了网址:)
您必须做的一件事是确保您的 svn 位置不与任何 apache 可服务的网站重叠。即,如果您将 DocumentRoot 设置为 /www,并将 svn 位置设置为 /www/svn...,那么您就会遇到麻烦 - Apache 将不知道应该用什么来提供服务(即 svn 特殊处理程序或直接 http 处理程序)。
查看此常见问题解答条目。
答案2
尝试签出http://svn.host.com/reposname/
(注意结尾的斜杠)。
答案3
检查这个网站: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/
可能别名指向与配置的 dav_svn.mod 相同的位置,并且在访问 repo 时 apache 和 dav_svn 之间存在竞争条件。
提供的文章中有更好的解释
在 dav_svn.conf 中:
<Location /svn> #Alias we are talking about
DAV svn
在 apache_site.conf 中
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName svn.za11.pl
#Alias /svn "/mnt/nfs/svn/" ###Comment out or change this alias
DocumentRoot /mnt/nfs/svn/
<Directory /mnt/nfs/svn/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Directory>
... rest of the file
答案4
当我错误地将我的 repo 放在 Apache 提供的 html 树下时,在我的 FC14 机器上,使用基于 RPM 的 subversion 和 apache 安装,出现了这个错误。
SVNParentPath(在 /etc/httpd/conf.d/subversion.conf 中)应该指向 DocumentRoot 之外的目录。
我把我的仓库移出后问题就消失了。
希望这可以帮助。