Erro de subversão: Repositório movido permanentemente para realocar


23

Eu configurei o subversion e o apache no meu servidor.

Se eu navegar através do navegador da web, ele funcionará bem ( http://svn.host.com/reposname ). No entanto, se eu fizer um checkout na minha máquina, recebo o seguinte erro:

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  

Eu verifiquei o log de erros do apache, mas ele não diz nada. (faz agora - veja a edição)

Meus repositórios estão armazenados em: / var / www / svn / repos /

Meu site está armazenado em: / var / www / vhosts / x / ...

Aqui está o arquivo conf para o subdomínio:

<Location />
   DAV svn
   SVNParentPath /var/www/svn/repos/

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /var/www/svn/auth/svn.htpasswd
   Require valid-user
</Location>

A autenticação funciona bem.

Alguém sabe o que pode estar causando isto?

- Editar

Então, reiniciei o apache (novamente) e tentei novamente, e agora isso me dá uma mensagem de erro, mas isso realmente não ajuda. Alguém tem uma idéia do que isso significa?

[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]

- Editar 2

Se eu fizer svn infoisso não dá nada útil:

[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

Eu também tentei fazer um checkout local ( svn checkout file:///var/www/svn/repos/reposname) e isso funciona bem (também adicionar / confirmar funciona bem). Então parece que tem algo a ver com o apache.

Algumas outras informações:

  • Estou executando o CentOs 5.3
  • Plesk 9.3
  • Subversion, versão 1.6.9 (r901367)

- Editar 3

Tentei mover os repositórios, mas não fez nenhuma diferença.

O selinux está desativado, então também não está.


1
Por que você tem Options +indexesisso realmente não deve fazer nada útil em um local svn.
Zoredache

Você tentou desativar temporariamente algo relacionado à autenticação / autorização?
Zoredache

Tentei fazer com que ele me mostrasse uma visão geral de todos os repositórios (depois descobri que há um comando diferente para isso), removi-o. Também removi a autenticação, mas ela não resolveu nada (o Auth realmente funciona bem, ele solicita um nome de usuário / senha e aceita apenas uma combinação real).
Bart S.

Respostas:


22

Eu tive isso recentemente ... mas acabou que eu tinha esquecido o URL :)

Uma coisa que você deve fazer é garantir que o seu svn Location não se sobreponha a nenhum site que possa ser acessado por apache. ou seja, se você definir seu DocumentRoot como / www e seu local svn como / www / svn ... então você estará com problemas - o Apache não saberá com o que deve ser servido (ou seja, os manipuladores especiais svn , ou um manipulador http direto).

Veja a entrada da FAQ para isso .


Parece que essa pode ser a resposta certa, mas aqui está outro post possível relacionado a isso: forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon

1
Uau, eu já sabia disso, mas pensei em tentar outra vez. Eu criei um novo repositório e funcionou. Eu estava confuso sobre o motivo disso, então coloquei o FTP no meu servidor e descobri que havia um diretório no diretório httpdocs do subdomínio (criado pelo plesk) chamado test (o mesmo que meu repositório). Eu o apaguei e agora funciona. Obrigado pela ajuda.
Bart S.

1
Para elaborar um pouco em um cenário comum. Se você possui uma configuração de host virtual e deseja o SVN na raiz (por exemplo, svn.example.com é o seu URL de repo), NÃO defina "DocumentRoot / svn" e use um bloco "<Directory / svn>" dentro do VirtualHost para configure as opções svn DAV para o caminho raiz. Isso desencadeará o problema em que o Apache fica confuso entre o manipulador DAV e seus manipuladores internos. Não deve haver nenhuma diretiva DocumentRoot no seu bloco VirtualHost. Use um bloco "<Location />" para configurar as opções svn DAV para o caminho raiz.
Nezroy

Eu tinha colocado uma diretiva Alias ​​na minha configuração, por exemplo, Alias svn /repositoriese depois configurado tudo <Location /svn/ >. O problema era exatamente o mesmo do link da FAQ, embora misteriosamente funcionasse perfeitamente por um mês e depois parasse na quarta-feira à tarde, na hora do chá. Se o seu repositório estiver em "/", você terá uma sobreposição com a diretiva DocumentRoot.
Matt Connolly

Funcionou perfeitamente! Foi o problema do DocumentRoot! 1)
Feiticeir05 /


2

Verifique este site: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

Provavelmente, o alias aponta para o mesmo local que o congfigured é dav_svn.mod e existe uma condição de corrida entre o apache e o dav_svn ao acessar o repositório.

É melhor explicado no artigo fornecido

No dav_svn.conf:

  <Location /svn>  #Alias we are talking about
  DAV svn

No 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

1
O link aqui está inoperante e não há substituição provável.
sysadmin1138

//, Atualizaria esta resposta?
Nathan Basanese

1

Eu tenho uma configuração de vhost com meu repositório no svn.mydomain.com/sites/ meu vhost tinha um bloco DocumentRoot e Location. A remoção da raiz do documento resolveu esse problema.


1

Eu recebi esse erro quando coloquei meu repositório por engano sob a árvore html servida pelo Apache, na minha máquina FC14 com instalações de subversão e apache baseadas em RPM.

SVNParentPath (em /etc/httpd/conf.d/subversion.conf) deve apontar para um diretório fora do DocumentRoot.

Mudei meu repositório e o problema desapareceu.

Espero que isto ajude.


1

Sei que é antigo, mas o encontrei no Google porque tive o mesmo problema. Verifique se a porta 7080 não está bloqueada pelo firewall do computador ou do servidor


0

Parece que você não está fazendo svn checkout, mas svn updateem um repositório existente (?).

Se sim, faça o seguinte:

svn switch --relocate http://svn.host.com/reponame


Não, como você pode ver na mensagem de erro que recebi, diz "Comando: Checkout de ..." Estou realmente tentando um novo checkout.
Bart S.Mar

0

Movido Permanentemente? Você pode algo como HTTPFox ou algo assim e verificar se o Apache está fornecendo o código de status correto para o seu repositório (deveria ser 200/OK). Acredito que o código de status 301corresponde a uma URL que "se moveu permanentemente" e que parece com o que o cliente svn está se referindo.


Firebug e wget dão 200 OK. Mas, como eu disse, se eu navegar através do meu navegador (navegando até http://svn.server.com/repos) ele funciona muito bem, recebo "repos - Revisão 0: /" e tudo mais. O problema ocorre apenas quando faço um checkout.
31710 Bart S.

0

Talvez um pouco tarde na conversa, mas vejo isso ao usar um Alias ​​na configuração do apache para lidar com o '/' à direita: Alias ​​/ svn / path / to / svn /


0

Você também precisa garantir que nenhuma diretiva Alias ​​seja mapeada para o local dos repositórios svn. Eu tive isso recentemente quando tive

Alias /svn /var/lib/svn
<Location /svn>
...
</Location>

onde o alias e a diretiva location se aplicam ao mesmo caminho.


0

Eu só tive um problema semelhante não no check-out, mas quando um COMMIT foi feito.

O motivo? esta pasta "obj \ Debug \ TempPE", por algum motivo estranho, que a pasta "TempPE" não é possível para COMITÁ-la ao repositório

Solução? ... COMMIT todas as outras pastas do projeto uma por uma e remova esse local do servidor SVN

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.