Subversion-Fehler: Das Repository wurde dauerhaft verschoben, um einen Standortwechsel zu ermöglichen


23

Ich habe Subversion und Apache auf meinem Server eingerichtet.

Wenn ich über meinen Webbrowser darauf zugreife, funktioniert es einwandfrei ( http://svn.host.com/reposname ). Wenn ich jedoch auf meinem Computer eine Prüfung durchführe, wird die folgende Fehlermeldung angezeigt:

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  

Ich habe das Fehlerprotokoll von Apache überprüft, aber es sagt nichts aus. (tut es jetzt - siehe bearbeiten)

Meine Repositories befinden sich unter: / var / www / svn / repos /

Meine Website ist gespeichert unter: / var / www / vhosts / x / ...

Hier ist die conf-Datei für die Subdomain:

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

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

Die Authentifizierung funktioniert einwandfrei.

Weiß jemand, was dies verursachen könnte?

- Bearbeiten

Also habe ich Apache (erneut) neu gestartet und es erneut versucht und jetzt bekomme ich eine Fehlermeldung, aber es hilft nicht wirklich. Hat jemand eine Idee was das bedeutet?

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

- Bearbeiten 2

Wenn ich svn infoes tue, gibt es nichts Nützliches:

[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

Ich habe auch versucht, ein lokales Checkout svn checkout file:///var/www/svn/repos/reposnamedurchzuführen ( ), und das funktioniert einwandfrei (auch das Hinzufügen / Festschreiben funktioniert einwandfrei). Es scheint also etwas mit Apache zu tun zu haben.

Einige andere Informationen:

  • Ich verwende CentOs 5.3
  • Plesk 9.3
  • Subversion, Version 1.6.9 (r901367)

- Bearbeiten Sie 3

Ich habe versucht, die Repositorys zu verschieben, aber es machte keinen Unterschied.

Selinux ist deaktiviert, das ist es auch nicht.


1
Warum haben Sie Options +indexesdas sollte nicht wirklich etwas Sinnvolles in einem SVN-Speicherort.
Zoredache

Haben Sie vorübergehend versucht, irgendetwas zu deaktivieren, was mit Authentifizierung / Autorisierung zu tun hat?
Zoredache

Ich habe versucht, mir einen Überblick über alle Repositories zu verschaffen (später habe ich herausgefunden, dass es dafür einen anderen Befehl gibt), ich habe ihn entfernt. Ich habe auch die Authentifizierung entfernt, aber sie hat nichts gelöst (Auth funktioniert tatsächlich einwandfrei, es fragt mich nach einem Benutzernamen / Passwort und akzeptiert nur eine echte Kombination).
Bart S.

Antworten:


22

Ich hatte das vor kurzem ... aber es stellte sich heraus, dass ich die URL vergessen hatte :)

Eine Sache, die Sie tun müssen, ist sicherzustellen, dass Ihr SVN-Standort keine von Apache bedienbaren Websites überlappt. dh, wenn Sie Ihren DocumentRoot auf / www und Ihren svn-Speicherort auf / www / svn setzen, dann sind Sie in Schwierigkeiten - Apache weiß nicht, womit er bedient werden soll (dh mit den svn-Spezialhandlern) oder ein direkter http-Handler).

Siehe hierzu den FAQ-Eintrag .


Dies scheint die richtige Antwort zu sein, aber hier ist ein weiterer möglicher Beitrag dazu: forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon

1
Wow, das wusste ich schon, aber ich dachte, ich würde es noch einmal versuchen. Ich habe ein neues Repository erstellt und das hat funktioniert. Ich war verwirrt, warum dies der Fall war, also führte ich einen FTP-Vorgang auf meinem Server durch und stellte fest, dass sich im httpdocs-Verzeichnis der (von plesk erstellten) Unterdomäne ein Verzeichnis namens test (das gleiche wie mein Repository) befand. Ich habe es gelöscht und jetzt funktioniert es. Danke für die Hilfe.
Bart S.

1
Um ein wenig auf ein allgemeines Szenario einzugehen. Wenn Sie einen virtuellen Host eingerichtet haben und SVN im Stammverzeichnis haben möchten (z. B. svn.example.com ist Ihre Repo-URL), setzen Sie NICHT "DocumentRoot / svn" und verwenden Sie dann einen "<Directory / svn>" - Block in Ihrem VirtualHost, um Konfigurieren Sie die DAV-SVN-Optionen für den Stammpfad. Dies löst das Problem aus, bei dem Apache zwischen dem DAV-Handler und seinen internen Handlern verwechselt wird. In Ihrem VirtualHost-Block sollte sich KEINE DocumentRoot-Direktive befinden. Verwenden Sie stattdessen einen "<Location />" - Block, um die DAV-SVN-Optionen für den Stammpfad zu konfigurieren.
Nezroy

Ich hatte zB eine Alias-Direktive in meine Konfiguration eingefügt Alias svn /repositoriesund dann alles in eingerichtet <Location /svn/ >. Das Problem war genau wie im FAQ-Link, obwohl es auf mysteriöse Weise einen Monat lang perfekt funktionierte und dann an einem Mittwochnachmittag zur Teezeit aufhörte. Wenn sich Ihr Repository unter "/" befindet, haben Sie eine Überschneidung mit Ihrer DocumentRoot-Direktive.
Matt Connolly

Es hat perfekt funktioniert! Es war das DocumentRoot-Problem! +1
Feiticeir0

2

Probieren Sie es aus http://svn.host.com/reposname/(beachten Sie den abschließenden Schrägstrich).


Ich bin, Subversion entfernt es einfach.
Bart S.

//, das hat bei mir funktioniert.
Nathan Basanese

2

Überprüfen Sie diese Website: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

Wahrscheinlich verweist der Alias ​​auf die gleiche Stelle wie die konfigurierte dav_svn.mod, und es besteht eine Racebedingung zwischen apache und dav_svn, während auf repo zugegriffen wird.

Es ist besser in bereitgestellten Artikel erklärt

In dav_svn.conf:

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

In der 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
Der Link hier ist tot und es gibt wahrscheinlich keinen Ersatz.
sysadmin1138

// Würde ich diese Antwort aktualisieren?
Nathan Basanese

1

Ich habe ein vhost-Setup mit meinem Repo, bei dem svn.mydomain.com/sites/ mein vhost einen DocumentRoot- und Location-Block hatte. Das Entfernen der Dokumentenwurzel löste dieses Problem.


1

Ich habe diese Fehlermeldung erhalten, als ich mein Repo auf meinem FC14-Computer mit RPM-basierter Subversion und Apache-Installation versehentlich unter den von Apache bereitgestellten HTML-Baum gestellt habe.

SVNParentPath (in /etc/httpd/conf.d/subversion.conf) sollte auf ein Verzeichnis außerhalb von DocumentRoot verweisen.

Ich zog mein Repo aus und das Problem ging weg.

Hoffe das hilft.


1

Ich weiß, dass dies alt ist, aber ich habe es bei Google gefunden, weil ich das gleiche Problem hatte. Stellen Sie sicher, dass Port 7080 weder von einem Computer noch von einer Server-Firewall blockiert wird


0

Es scheint, als ob Sie dies nicht tun svn checkout, sondern svn updatein einem vorhandenen Repository (?).

Wenn ja, mach das:

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


Nein, wie Sie in der Fehlermeldung sehen können, die ich ausgegeben habe, heißt es "Befehl: Auschecken von ...". Ich versuche wirklich eine neue Auscheckung.
Bart S.

0

Dauerhaft umgezogen? Können Sie so etwas wie HTTPFox oder so und überprüfen Sie, ob Apache den richtigen Statuscode für Ihr Repository ausgibt (sollte sein 200/OK). Ich glaube, dass der Statuscode 301einer URL entspricht, die "permanent verschoben" wurde und sich so anhört, als würde der SVN-Client darauf verweisen.


Firebug und Wget geben einen 200 OK. Aber wie gesagt, wenn ich über meinen Browser (durch Surfen zu http://svn.server.com/repos) danach suche, funktioniert es hervorragend, ich bekomme "repos - Revision 0: /" und alles. Das Problem tritt nur beim Auschecken auf.
Bart S.

0

Vielleicht etwas zu spät im Gespräch, aber ich sehe dies, wenn ich in der Apache-Konfiguration einen Alias ​​verwende, um mit dem nachfolgenden '/' fertig zu werden: Alias ​​/ svn / path / to / svn /


0

Sie müssen auch sicherstellen, dass keine Alias-Direktive dem Speicherort der SVN-Repos zugeordnet ist. Ich hatte das vor kurzem, als ich hatte

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

Dabei gelten der Alias ​​und die Standortanweisung für denselben Pfad.


0

Ich hatte gerade ein ähnliches Problem, nicht als ich ausgecheckt habe, sondern als ein COMMIT gemacht wurde.

Der Grund? Dieser Ordner "obj \ Debug \ TempPE" kann aus irgendeinem seltsamen Grund nicht in das Repository übernommen werden

Lösung? ... Alle anderen Ordner des Projekts nacheinander COMMITEN und diesen Speicherort vom SVN-Server entfernen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.