Błąd Subversion: repozytorium zostało przeniesione na stałe w celu przeniesienia

23

Skonfigurowałem subversion i apache na moim serwerze.

Jeśli przeglądam go za pomocą przeglądarki internetowej, działa dobrze ( http://svn.host.com/reposname ). Jeśli jednak dokonam kasy na moim komputerze, pojawia się następujący błąd:

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  

Sprawdziłem dziennik błędów Apache, ale nic nie mówi. (robi to teraz - patrz edycja)

Moje repozytoria są przechowywane pod: / var / www / svn / repos /

Moja strona jest przechowywana pod: / var / www / vhosts / x / ...

Oto plik konf dla subdomeny:

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

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

Uwierzytelnianie działa poprawnie.

Czy ktoś wie, co może być przyczyną?

-- Edytować

Ponownie uruchomiłem apache (ponownie) i spróbowałem jeszcze raz, a teraz wyświetla mi komunikat o błędzie, ale to naprawdę nie pomaga. Czy ktoś ma pomysł, co to znaczy?

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

- Edycja 2

Jeśli to zrobię svn info, nie da to nic użytecznego:

[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

Próbowałem także zrobić lokalną kasę ( svn checkout file:///var/www/svn/repos/reposname) i to działa dobrze (również dodawanie / zatwierdzanie działa dobrze). Wygląda więc na to, że ma to coś wspólnego z apache.

Niektóre inne informacje:

  • Korzystam z CentOs 5.3
  • Plesk 9.3
  • Subversion, wersja 1.6.9 (r901367)

- Edycja 3

Próbowałem przenieść repozytoria, ale to nie miało znaczenia.

selinux jest wyłączony, więc to też nie jest.

Bart S.
źródło
1
Dlaczego tak nie Options +indexespowinno być nic przydatnego w lokalizacji svn.
Zoredache
Czy próbowałeś tymczasowo wyłączyć cokolwiek związanego z uwierzytelnianiem / autoryzacją?
Zoredache
Starałem się, aby pokazywał mi przegląd wszystkich repozytoriów (później dowiedziałem się, że istnieje inne polecenie), usunąłem go. Usunąłem również uwierzytelnianie, ale nic nie rozwiązało (Auth faktycznie działa poprawnie, prosi mnie o nazwę użytkownika / hasło i akceptuje tylko prawdziwą kombinację).
Bart S.

Odpowiedzi:

22

Miałem to niedawno ... ale okazało się, że zapomniałem adresu URL :)

Jedną rzeczą, którą musisz zrobić, to upewnić się, że Twoja lokalizacja svn nie pokrywa się z żadnymi witrynami obsługiwanymi przez apache. tzn. jeśli ustawisz DocumentRoot na / www, a swoją lokalizację svn na / www / svn ... to masz kłopoty - Apache nie będzie wiedział, z czym ma być obsługiwany (tj. specjalne programy obsługi svn lub prosty moduł obsługi http).

Zobacz wpis FAQ na ten temat .

gbjbaanb
źródło
Wydaje się, że może to być właściwa odpowiedź, ale oto kolejny możliwy post związany z tym: forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon
1
Wow, już o tym wiedziałem, ale myślałem, że spróbowałem jeszcze raz. Utworzyłem nowe repozytorium i działało. Byłem zdezorientowany, dlaczego tak było, więc wysłałem FTP na mój serwer i odkryłem, że w katalogu httpdocs subdomeny (utworzonej przez plesk) znajduje się katalog o nazwie test (taki sam jak moje repozytorium). Usunąłem go i teraz działa. Dzięki za pomoc.
Bart S.
1
Aby nieco rozwinąć jeden wspólny scenariusz. Jeśli masz konfigurację hosta wirtualnego i chcesz SVN w katalogu głównym (np. Svn.przyklad.com to adres URL repozytorium), NIE ustawiaj opcji „DocumentRoot / svn”, a następnie użyj bloku „<Directory / svn>” w swoim VirtualHost, aby skonfiguruj opcje svn DAV dla ścieżki głównej. Spowoduje to problem polegający na tym, że Apache zostanie pomylony między programem obsługi DAV a jego procedurami obsługi wewnętrznej. W bloku VirtualHost nie powinna znajdować się żadna dyrektywa DocumentRoot. Zamiast tego użyj bloku „<Lokalizacja />”, aby skonfigurować opcje svn DAV dla ścieżki katalogu głównego.
nezroy
W mojej konfiguracji umieściłem dyrektywę Alias, np. Alias svn /repositoriesA następnie wszystko skonfigurowałem <Location /svn/ >. Problem był dokładnie taki, jak w linku FAQ, choć w tajemniczy sposób działał idealnie przez miesiąc, a następnie zatrzymał się w środowe popołudnie przy herbacie. Jeśli twoje repozytorium znajduje się w „/”, wówczas nakładasz się na dyrektywę DocumentRoot.
Matt Connolly,
Działa idealnie! To był problem z DocumentRoot! +1
Feiticeir0
2

Spróbuj sprawdzić http://svn.host.com/reposname/(zwróć uwagę na ukośnik).

Bill Weiss
źródło
Jestem, subversion po prostu to usuwa.
Bart S.
//, To zadziałało dla mnie.
Nathan Basanese
2

Sprawdź tę stronę: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

Prawdopodobnie alias wskazuje to samo miejsce, co skonfigurowany, to dav_svn.mod, a między apache i dav_svn istnieje warunek wyścigu podczas uzyskiwania dostępu do repo.

Lepiej to wyjaśniono w dostarczonym artykule

W dav_svn.conf:

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

W 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
źródło
1
Link tutaj jest martwy i nie ma możliwości jego zastąpienia.
sysadmin1138
// Czy zaktualizowałbyś tę odpowiedź?
Nathan Basanese
1

Mam konfigurację vhost z moim repozytorium na svn.mydomain.com/sites/ moim vhost miał blok DocumentRoot i Location. Usunięcie katalogu głównego rozwiązało ten problem.

Jan
źródło
1

Wystąpił ten błąd, gdy przez pomyłkę umieściłem moje repozytorium pod drzewem HTML obsługiwanym przez Apache na mojej maszynie FC14 z instalacją subversion i apache opartą na RPM.

SVNParentPath (w /etc/httpd/conf.d/subversion.conf) powinien wskazywać na katalog poza DocumentRoot.

Po przeniesieniu repozytorium problem zniknął.

Mam nadzieję że to pomoże.

Matt
źródło
1

Wiem, że to stare, ale znalazłem je w Google, ponieważ miałem ten sam problem. Upewnij się, że port 7080 nie jest blokowany przez zaporę komputera ani serwera

Mikey B.
źródło
0

Wygląda na to, że nie robisz svn checkout, ale raczej svn updatew istniejącym repozytorium (?).

Jeśli tak, zrób to:

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


źródło
Nie, jak widać w komunikacie o błędzie, który podałem, brzmi „Polecenie: Kasa z ...” Naprawdę próbuję nowej kasy.
Bart S.
0

Przeprowadziłeś się na stałe? Czy możesz coś takiego jak HTTPFox lub coś innego i sprawdzić, czy Apache podaje odpowiedni kod statusu dla twojego repozytorium (powinien być 200/OK). Uważam, że kod stanu 301odpowiada adresowi URL, który został „przeniesiony na stałe” i brzmi jak to, do którego odnosi się klient svn.

Earlz
źródło
Firebug i wget dają 200 OK. Ale tak jak powiedziałem, jeśli przeglądam to w przeglądarce (surfując do http://svn.server.com/repos), to działa świetnie, otrzymuję „repos - Wersja 0: /” i wszystko. Problem występuje tylko wtedy, gdy dokonam kasy.
Bart S.
0

Może trochę późno w rozmowie, ale widzę to podczas używania aliasu w konfiguracji apache do radzenia sobie z końcowym „/”: Alias ​​/ svn / path / to / svn /


źródło
0

Musisz także upewnić się, że żadna dyrektywa Alias ​​nie odwzorowuje lokalizacji repozytoriów svn. Miałem to niedawno, kiedy miałem

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

gdzie alias i dyrektywa lokalizacji dotyczą tej samej ścieżki.


źródło
0

Po prostu miałem podobny problem nie podczas WYKONYWANIA, ale kiedy wykonano polecenie.

Powód? ten folder „obj \ Debug \ TempPE”, z jakiegoś dziwnego powodu, że folder „TempPE” nie jest w stanie zatwierdzić go do repozytorium

Rozwiązanie? ... ZATWIERDZAJ wszystkie pozostałe foldery projektu jeden po drugim i usuń tę lokalizację z serwera SVN

Mauricio Gracia Gutierrez
źródło