This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!
Pracując na stanowisku programisty nie uciekniemy od kwestii kontroli wersji. O ile na czyimś serwerze dostaniemy po prostu login, hasło i adres repozytorium, o tyle na swoim [lub jakimkolwiek innym administrowanym przez nas] musimy się o wszystko zatroszczyć sami. W dzisiejszym wpisie chciałbym przedstawić kilka informacji nt. tego, jak naprawić jeden z dosyć irytujących problemów z instalacją własnego serwera SVN.
Fotografia: Daquella manera, CC-BY.
SVN: Błąd: "Repository moved permanently to 'url'; please relocate".
W dzisiejszym wpisie nie będę się skupiał na instalacji samego klienta svn i konfiguracji repozytorium w taki sposób, żeby było dostępne na zewnątrz. Zakładam, że każdy znalazł już w Internecie odpowiednie komendy i wpisał je w konsolę. To, o czym dzisiaj chciałbym powiedzieć, to błąd, który pojawia się podczas błędnej konfiguracji modułu DAV dla SVNa.Tytułowy błąd o złudnie przyjaznej treści nie mówi nam niestety, co faktycznie zostało zepsute. Objawia się on zazwyczaj tym, że kiedy chcemy przejrzeć repozytorium za pomocą przeglądarki, wszystko działa bez żadnego problemu. Sam problem pojawia się podczas próby wykonania checkoutu repozytorium do working copy na naszym komputerze. Pojawia się wtedy komunikat:
Repository moved permanently to 'url'; please relocate.Gdzie oczywiście "url" oznacza adres naszego repozytorium. Oczywiście można próbować wykonać operację relocate zgodnie z tym, co mówi nam SVN, aczkolwiek na pewno nie jest to przyczyna w takiej sytuacji, jak moja, kiedy próbowałem zrobić checkout dopiero co utworzonej struktury.
Powody mogą być dwa:
- nieprawidłowe położenie katalogu z repozytoriami,
- błędna konfiguracja modułu dav_svn Apache.
W tym przypadku dochodzi do konfliktu dwóch funkcji serwera, które próbują wyrwać sobie dany zasób, żeby pokazać go albo w formie zwykłego listingu plików, albo w formie odczytanej struktury plików repo, co będzie o wiele bardziej przydatne.
W drugim przypadku, sytuacja wynika z błędnego ustawienia niepoprawnych wartości zmiennych SVNPath i SVNParentPath w konfiguracji Apache. U mnie problem polegał na tym, że obie miały tą samą wartość. Wystarczyło zostawić jedną z nich, a drugą usunąć i wszystko zaczęło działać poprawnie. Dla potomnych publikuję tutaj przykładową, poprawnie działającą konfigurację, wraz z ustawieniami dot. autoryzacji użytkowników:
<Location />
DAV svn
SVNParentPath /var/svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/svn/svn.passwd
AuthzSVNAccessFile /var/svn/svn.access
Require valid-user
</Location>
Mam nadzieję, że się przyda. Tymczasem życzę wszystkiego dobrego i zapraszam do lektury kolejnego wpisu już w piątek!