Error de subversión: el repositorio se movió permanentemente para reubicar

23

He configurado subversion y apache en mi servidor.

Si lo busco a través de mi navegador web, funciona bien ( http://svn.host.com/reposname ). Sin embargo, si hago un pago en mi máquina me sale el siguiente error:

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  

Revisé el registro de errores de apache, pero no dice nada. (lo hace ahora - ver edición)

Mis repositorios se almacenan en: / var / www / svn / repos /

Mi sitio web está almacenado en: / var / www / vhosts / x / ...

Aquí está el archivo conf para el subdominio:

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

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

La autenticación funciona bien.

¿Alguien sabe qué podría estar causando esto?

- Editar

Así que reinicié Apache (nuevamente) y lo intenté nuevamente y ahora me da un mensaje de error, pero en realidad no ayuda. Alguien tiene una idea de lo que 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

Si lo hago svn info, no da 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

También intenté hacer un pago local ( svn checkout file:///var/www/svn/repos/reposname) y eso funciona bien (también agregar / confirmar funciona bien). Entonces parece que tiene algo que ver con apache.

Alguna otra información:

  • Estoy ejecutando CentOs 5.3
  • Plesk 9.3
  • Subversion, versión 1.6.9 (r901367)

- Editar 3

Intenté mover los repositorios, pero no hizo ninguna diferencia.

selinux está deshabilitado, así que tampoco lo es.

Bart S.
fuente
1
¿Por qué tiene Options +indexeseso que realmente no debería hacer nada útil en una ubicación svn?
Zoredache
¿Has intentado deshabilitar temporalmente algo relacionado con la autenticación / autorización?
Zoredache
Traté de hacer que me mostrara una descripción general de todos los repositorios (más tarde descubrí que hay un comando diferente para eso), lo eliminé. También eliminé la autenticación pero no resolvió nada (Auth realmente funciona bien, me pide un nombre de usuario / contraseña y solo acepta una combinación real).
Bart S.

Respuestas:

22

Tuve esto recientemente ... pero resultó que había olvidado la url :)

Una cosa que debe hacer es asegurarse de que su ubicación svn no se superponga con ningún sitio web que pueda ser servido por Apache. es decir, si configura su DocumentRoot como / www, y su ubicación svn como / www / svn ... entonces está en problemas: Apache no sabrá con qué se supone que sirve (es decir, los controladores especiales svn o un controlador http directo).

Vea la entrada de preguntas frecuentes para esto .

gbjbaanb
fuente
Parece que podría ser la respuesta correcta, pero aquí hay otra publicación posible relacionada con esto: forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon
1
Wow, ya sabía sobre esto, pero pensé que lo intenté de nuevo. Creé un nuevo repositorio y funcionó. Estaba confundido en cuanto a por qué era esto, así que ingresé por FTP a mi servidor y descubrí que había un directorio en el directorio httpdocs del subdominio (creado por plesk) llamado prueba (lo mismo que mi repositorio). Lo eliminé y ahora funciona. Gracias por la ayuda.
Bart S.
1
Para elaborar un poco en un escenario común. Si tiene una configuración de host virtual y desea SVN en la raíz (por ejemplo, svn.example.com es su URL de repositorio), NO configure "DocumentRoot / svn" y luego use un bloque "<Directory / svn>" dentro de su VirtualHost para configure las opciones de svn de DAV para la ruta raíz. Esto desencadenará el problema en el que Apache se confunde entre el controlador DAV y sus controladores internos. No debe haber ninguna directiva DocumentRoot en su bloque VirtualHost. Use un bloque "<Ubicación />" en su lugar para configurar las opciones de svn de DAV para la ruta raíz.
nezroy
Puse una directiva Alias ​​en mi configuración, por ejemplo, Alias svn /repositoriesy luego configuré todo <Location /svn/ >. El problema era exactamente como en el enlace de preguntas frecuentes, aunque misteriosamente funcionó perfectamente durante un mes y luego se detuvo un miércoles por la tarde a la hora del té. Si su repositorio está en "/", tendrá una superposición con su directiva DocumentRoot.
Matt Connolly
¡Funcionó perfectamente! ¡Era el problema de DocumentRoot! +1
Feiticeir0
2

Intente verificar http://svn.host.com/reposname/(tenga en cuenta la barra inclinada final).

Bill Weiss
fuente
Lo estoy, la subversión simplemente lo elimina.
Bart S.
//, Esto funcionó para mí.
Nathan Basanese
2

Consulte esta web: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

Probablemente el alias apunta al mismo lugar que congfigurado es dav_svn.mod, y hay una condición de carrera entre apache y dav_svn al acceder al repositorio.

Se explica mejor en el artículo provisto.

En dav_svn.conf:

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

En 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
sirkubax
fuente
1
El enlace aquí está muerto, y no hay reemplazo probable.
sysadmin1138
//, ¿Actualizarías esta respuesta?
Nathan Basanese
1

Tengo una configuración de vhost con mi repositorio en svn.mydomain.com/sites/ mi vhost tenía un bloque DocumentRoot y Location. La eliminación de la documentroot resolvió este problema.

John
fuente
1

Recibí este error cuando coloqué mi repositorio por error en el árbol html servido por Apache, en mi máquina FC14 con subversión basada en RPM e instalaciones de apache.

SVNParentPath (en /etc/httpd/conf.d/subversion.conf) debe apuntar a un directorio fuera de DocumentRoot.

Saqué mi repositorio y el problema desapareció.

Espero que esto ayude.

Mate
fuente
1

Sé que esto es antiguo, pero lo encontré en Google porque tenía el mismo problema. Asegúrese de que el puerto 7080 no esté bloqueado por la computadora o el firewall del servidor

Mikey B
fuente
0

Parece que no lo estás haciendo svn checkout, sino más bien svn updateen un repositorio existente (?).

Si es así, haz esto:

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


fuente
No, como puede ver en el mensaje de error que le di, dice "Comando: Pagar desde ..." Realmente estoy intentando un nuevo pago.
Bart S.
0

¿Movido permanentemente? ¿Puede algo como HTTPFox o algo así y verificar que Apache está dando el código de estado correcto para su repositorio (debería ser 200/OK). Creo que el código de estado 301corresponde a una URL que se ha "movido permanentemente" y que suena a lo que se refiere el cliente svn.

Earlz
fuente
Firebug y wget dan 200 OK. Pero como dije, si lo busco a través de mi navegador (navegando http://svn.server.com/repos) funciona muy bien, obtengo "repos - Revisión 0: /" y todo. El problema solo ocurre cuando hago un pago.
Bart S.
0

Tal vez un poco tarde en la conversación, pero veo esto cuando uso un Alias ​​en la configuración de apache para lidiar con el '/' final: Alias ​​/ svn / path / to / svn /


fuente
0

También debe asegurarse de que ninguna directiva Alias ​​se asigne a la ubicación de los repositorios svn. Tuve esto recientemente cuando tuve

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

donde el alias y la directiva de ubicación se aplican a la misma ruta.


fuente
0

Acabo de tener un problema similar no cuando CHEQUEO, sino cuando se realizó un COMPROMISO.

¿La razón? esta carpeta "obj \ Debug \ TempPE", por alguna extraña razón de que la carpeta "TempPE" no es posible COMPROMETERLA al repositorio

¿Solución? ... COMPROMETE todas las demás carpetas del proyecto una por una y elimine esa ubicación del servidor SVN

Mauricio Gracia Gutierrez
fuente