Errore di sovversione: il repository è stato spostato in modo permanente per riposizionare


23

Ho impostato sovversione e apache sul mio server.

Se lo sfoglio tramite il mio browser web funziona bene ( http://svn.host.com/reposname ). Tuttavia, se eseguo un checkout sul mio computer, viene visualizzato il seguente errore:

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  

Ho controllato il registro degli errori di Apache, ma non dice nulla. (lo fa ora - vedi modifica)

I miei repository sono archiviati in: / var / www / svn / repos /

Il mio sito Web è archiviato in: / var / www / vhosts / x / ...

Ecco il file conf per il sottodominio:

<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'autenticazione funziona bene.

Qualcuno sa cosa potrebbe causare questo?

-- Modificare

Quindi ho riavviato Apache (di nuovo) e l'ho provato di nuovo e ora mi dà un messaggio di errore, ma non aiuta davvero. Qualcuno ha idea di cosa significhi?

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

- Modifica 2

Se lo faccio svn infonon dà nulla di 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

Ho anche provato a fare un checkout locale ( svn checkout file:///var/www/svn/repos/reposname) e funziona bene (anche l'aggiunta / il commit funziona bene). Quindi sembra che abbia qualcosa a che fare con Apache.

Alcune altre informazioni:

  • Sto usando CentOs 5.3
  • Plesk 9.3
  • Subversion, versione 1.6.9 (r901367)

- Modifica 3

Ho provato a spostare i repository, ma non ha fatto alcuna differenza.

selinux è disabilitato, quindi neanche quello.


1
Perché hai Options +indexesche non dovrebbe davvero fare nulla di utile in una posizione svn.
Zoredache,

Hai provato a disabilitare temporaneamente qualcosa a che fare con l'autenticazione / autorizzazione?
Zoredache,

Ho provato a farlo mostrare una panoramica di tutti i repository (in seguito ho scoperto che esiste un comando diverso per quello), l'ho rimosso. Ho anche rimosso l'autenticazione ma non ha risolto nulla (Auth funziona davvero bene, mi chiede un nome utente / password e accetta solo una combinazione reale).
Bart S.

Risposte:


22

L'ho avuto di recente ... ma si è scoperto che avevo dimenticato l'URL :)

Una cosa che devi fare è assicurarti che la tua posizione svn non si sovrapponga ad alcun sito web servibile da apache. cioè, se imposti DocumentRoot su / www e la tua posizione svn su / www / svn ... allora sei nei guai - Apache non saprà con cosa dovrebbe essere servito (cioè i gestori speciali svn o un gestore http diretto).

Vedere la voce FAQ per questo .


Sembra che potrebbe essere la risposta giusta, ma ecco un altro possibile post correlato a questo: forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon,

1
Wow, lo sapevo già, ma pensavo di averlo provato di nuovo. Ho creato un nuovo repository e ha funzionato. Ero confuso sul perché questo fosse, quindi ho FTP nel mio server e ho scoperto che c'era una directory nella directory httpdocs del sottodominio (creata da Plesk) chiamata test (lo stesso del mio repository). L'ho eliminato e ora funziona. Grazie per l'aiuto.
Bart S.

1
Elaborare un po 'uno scenario comune. Se si dispone di una configurazione host virtuale e si desidera SVN alla radice (ad es. Svn.example.com è l'URL del repository), NON impostare "DocumentRoot / svn" e quindi utilizzare un blocco "<Directory / svn>" all'interno di VirtualHost per configura le opzioni DAV svn per il percorso root. Ciò attiverà il problema in cui Apache viene confuso tra il gestore DAV e i suoi gestori interni. Non ci dovrebbe essere nessuna direttiva DocumentRoot nel blocco VirtualHost. Utilizzare invece un blocco "<Posizione />" per configurare le opzioni DAV svn per il percorso principale.
Nezroy,

Avevo inserito una direttiva Alias ​​nella mia configurazione, ad esempio, Alias svn /repositoriese quindi avevo impostato tutto <Location /svn/ >. Il problema era esattamente come nel collegamento FAQ, sebbene misteriosamente, ha funzionato perfettamente per un mese e poi si è fermato un mercoledì pomeriggio all'ora del tè. Se il repository si trova su "/", si avrà una sovrapposizione con la direttiva DocumentRoot.
Matt Connolly,

Ha funzionato perfettamente! Era il problema DocumentRoot! +1
Feiticeir0


2

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

Probabilmente l'alias indica lo stesso posto di congfigurato è dav_svn.mod, e ci sono condizioni di gara tra apache e dav_svn durante l'accesso al repo.

È meglio spiegato nell'articolo fornito

In dav_svn.conf:

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

In 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
Il link qui è morto e non è possibile sostituirlo.
sysadmin1138

//, aggiorneresti questa risposta?
Nathan Basanese,

1

Ho una configurazione vhost con il mio repository sul svn.mydomain.com/sites/ mio vhost aveva un blocco DocumentRoot e Location. La rimozione del documentroot ha risolto questo problema.


1

Ho ricevuto questo errore quando ho erroneamente inserito il mio repository sotto l'albero html servito da Apache, sulla mia macchina FC14 con sovversione basata su RPM e installazioni apache.

SVNParentPath (in /etc/httpd/conf.d/subversion.conf) dovrebbe puntare a una directory esterna a DocumentRoot.

Ho spostato il mio repository e il problema è scomparso.

Spero che sia di aiuto.


1

So che è vecchio ma l'ho trovato su Google perché ho avuto lo stesso problema. Assicurarsi che la porta 7080 non sia bloccata dal firewall del computer o del server


0

Sembra che tu non lo stia facendo svn checkout, ma piuttosto svn updatein un repository esistente (?).

In tal caso, procedere come segue:

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


No, come puoi vedere nel messaggio di errore che ho dato dice "Comando: Checkout da ..." Sto davvero provando un nuovo checkout.
Bart S.

0

Trasferito? Puoi qualcosa come HTTPFox o qualcosa del genere e verificare che Apache stia fornendo il giusto codice di stato per il tuo repository (dovrebbe essere 200/OK). Credo che il codice di stato 301corrisponda a un URL che si è "spostato in modo permanente" e suona come quello a cui si riferisce il client svn.


Firebug e wget danno entrambi un 200 OK. Ma come ho detto, se lo sfoglio tramite il mio browser (navigando verso http://svn.server.com/repos) funziona alla grande, ottengo "repos - Revision 0: /" e tutto. Il problema si verifica solo quando faccio un checkout.
Bart S.

0

Forse un po 'tardi nella conversazione, ma vedo questo quando uso un Alias ​​nella configurazione di Apache per gestire il finale' / ': Alias ​​/ svn / path / to / svn /


0

È inoltre necessario assicurarsi che nessuna direttiva Alias ​​sia associata alla posizione dei repository svn. L'ho avuto di recente quando l'ho avuto

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

dove l'alias e la direttiva location si applicano allo stesso percorso.


0

Ho avuto un problema simile non durante il CONTROLLO, ma quando è stato effettuato un COMMIT.

La ragione? questa cartella "obj \ Debug \ TempPE", per qualche strana ragione per cui la cartella "TempPE" non può essere COMMITATA nel repository

Soluzione? ... COMMITARE tutte le altre cartelle del progetto una per una e rimuovere quella posizione dal server SVN

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.