Erreur de subversion: le référentiel a été déplacé définitivement pour se déplacer


23

J'ai installé subversion et apache sur mon serveur.

Si je le parcoure via mon navigateur Web, cela fonctionne très bien ( http://svn.host.com/reposname ). Cependant, si je passe une commande sur ma machine, j'obtiens l'erreur suivante:

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  

J'ai vérifié le journal des erreurs d'apache, mais il ne dit rien. (il le fait maintenant - voir modifier)

Mes référentiels sont stockés sous: / var / www / svn / repos /

Mon site Web est stocké sous: / var / www / vhosts / x / ...

Voici le fichier conf pour le sous-domaine:

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

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

L'authentification fonctionne bien.

Est-ce que quelqu'un sait ce qui pourrait causer cela?

-- Modifier

J'ai donc redémarré apache (à nouveau) et l'ai réessayé et maintenant il me donne un message d'erreur, mais cela n'aide pas vraiment. Quelqu'un a une idée de ce que cela signifie?

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

- Modifier 2

Si je fais svn infoça ne donne rien d'utile:

[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

J'ai également essayé de faire un checkout local ( svn checkout file:///var/www/svn/repos/reposname) et cela fonctionne bien (l'ajout / la validation fonctionne également très bien). Il semble donc que cela ait quelque chose à voir avec apache.

Quelques autres informations:

  • J'utilise CentOs 5.3
  • Plesk 9.3
  • Subversion, version 1.6.9 (r901367)

- Modifier 3

J'ai essayé de déplacer les référentiels, mais cela n'a fait aucune différence.

selinux est désactivé, ce n'est pas non plus le cas.


1
Pourquoi avez-vous Options +indexescela ne devrait pas vraiment faire quoi que ce soit d'utile dans un emplacement svn.
Zoredache

Avez-vous essayé de désactiver temporairement quoi que ce soit concernant l'authentification / l'autorisation?
Zoredache

J'ai essayé de lui faire afficher un aperçu de tous les référentiels (plus tard, j'ai découvert qu'il y avait une commande différente pour cela), je l'ai supprimée. J'ai également supprimé l'authentification mais cela n'a rien résolu (Auth fonctionne vraiment bien, il me demande un nom d'utilisateur / mot de passe et n'accepte qu'une vraie combinaison).
Bart S.

Réponses:


22

J'ai eu ça récemment ... mais il s'est avéré que j'avais oublié l'url :)

Une chose que vous devez faire est de vous assurer que votre emplacement svn ne chevauche aucun site Web apache-servable. c'est-à-dire, si vous définissez votre DocumentRoot pour être / www, et votre emplacement svn pour être / www / svn ... alors vous avez des problèmes - Apache ne saura pas avec quoi il est censé être servi (c'est-à-dire les gestionnaires spéciaux svn , ou un gestionnaire http direct).

Voir l' entrée FAQ pour cela .


Cela semble être la bonne réponse, mais voici un autre article possible à ce sujet: forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon

1
Wow, je savais déjà à ce sujet, mais je pensais que je l'ai essayé à nouveau. J'ai créé un nouveau référentiel et cela a fonctionné. J'étais confus quant à la raison pour laquelle c'était, alors j'ai transféré par FTP sur mon serveur et j'ai découvert qu'il y avait un répertoire dans le répertoire httpdocs du sous-domaine (créé par plesk) appelé test (le même que mon référentiel). Je l'ai supprimé et maintenant ça marche. Merci pour l'aide.
Bart S.

1
Pour élaborer un peu sur un scénario commun. Si vous avez une configuration d'hôte virtuel et que vous voulez SVN à la racine (par exemple, svn.example.com est votre URL de dépôt ), ne définissez PAS "DocumentRoot / svn", puis utilisez un bloc "<Directory / svn>" à l'intérieur de votre VirtualHost pour configurer les options DAV svn pour le chemin racine. Cela déclenchera le problème où Apache se confondra entre le gestionnaire DAV et ses gestionnaires internes. Il ne devrait y avoir AUCUNE directive DocumentRoot dans votre bloc VirtualHost. Utilisez plutôt un bloc "<Location />" pour configurer les options DAV svn pour le chemin racine.
nezroy

J'avais mis une directive Alias ​​dans ma configuration, par exemple Alias svn /repositories, puis tout configuré <Location /svn/ >. Le problème était exactement comme dans le lien FAQ, bien que mystérieusement, cela a fonctionné parfaitement pendant un mois, puis s'est arrêté un mercredi après-midi à l'heure du thé. Si votre référentiel est à "/" alors vous aurez un chevauchement avec votre directive DocumentRoot.
Matt Connolly

Cela a parfaitement fonctionné! C'était le problème de DocumentRoot! +1
Feiticeir0


2

Consultez ce site Web: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

L'alias pointe probablement vers le même endroit que congfiguré est dav_svn.mod, et il y a des conditions de concurrence entre apache et dav_svn lors de l'accès au dépôt.

C'est mieux expliqué dans l'article fourni

Dans dav_svn.conf:

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

Dans 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
Le lien ici est mort et il n'y a aucun remplacement probable.
sysadmin1138

//, Voulez-vous mettre à jour cette réponse?
Nathan Basanese

1

J'ai une configuration vhost avec mon dépôt sur svn.mydomain.com/sites/ mon vhost avait un bloc DocumentRoot et Location. La suppression de la racine du document a résolu ce problème.


1

J'ai eu cette erreur lorsque j'ai placé par erreur mon dépôt sous l'arborescence html servie par Apache, sur ma machine FC14 avec des installations de subversion et apache basées sur RPM.

SVNParentPath (dans /etc/httpd/conf.d/subversion.conf) doit pointer vers un répertoire en dehors de DocumentRoot.

J'ai déménagé mon repo et le problème a disparu.

J'espère que cela t'aides.


1

Je sais que c'est vieux mais je l'ai trouvé sur Google car j'avais le même problème. Assurez-vous que le port 7080 n'est pas bloqué par le pare-feu de l'ordinateur ou du serveur


0

Il semble que vous ne le fassiez pas svn checkout, mais plutôt svn updatedans un référentiel existant (?).

Si oui, procédez comme suit:

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


Non, comme vous pouvez le voir dans le message d'erreur que j'ai donné, il dit "Commande: Commander à partir de ..." J'essaie vraiment une nouvelle caisse.
Bart S.

0

Déplacé en permanence? Pouvez-vous quelque chose comme HTTPFox ou quelque chose et vérifier qu'Apache donne le bon code d'état pour votre référentiel (devrait l'être 200/OK). Je crois que le code d'état 301correspond à une URL qui a "bougé de façon permanente" et qui ressemble à ce à quoi le client svn fait référence.


Firebug et wget donnent tous deux 200 OK. Mais comme je l'ai dit, si j'y accède via mon navigateur (en surfant sur http://svn.server.com/repos) cela fonctionne très bien, j'obtiens "repos - Révision 0: /" et tout. Le problème se produit uniquement lorsque j'effectue un paiement.
Bart S.

0

Peut-être un peu tard dans la conversation, mais je le vois lorsque j'utilise un alias dans la configuration d'apache pour gérer le dernier '/': Alias ​​/ svn / path / to / svn /


0

Vous devez également vous assurer qu'aucune directive Alias ​​ne correspond à l'emplacement du dépôt svn. J'ai eu ça récemment quand j'avais

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

où l'alias et la directive location s'appliquent au même chemin.


0

J'ai juste eu un problème similaire non pas lors du CHECKING OUT, mais lors d'un COMMIT.

La raison? ce dossier "obj \ Debug \ TempPE", pour une raison étrange que le dossier "TempPE" ne soit pas possible de le COMMITER dans le référentiel

Solution? ... COMMITER tous les autres dossiers du projet un par un et supprimer cet emplacement du serveur SVN

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.