Replikacja repozytoriów SVN

Replikacja repozytorium pozwala nam automatyczne tworzenie kopii zapasowej lub szybkie uruchomienie serwera do którego można wysyłać zmiany, gdy serwer główny ulegnie awarii.

Postanowiłem umieścić repozytoria pod adresem „/svn”, więc dodaję lokalizację do Apache’a:

To wystarczy, aby przeglądać repozytoria przez WWW, ale nie wystarczy do poprawnego działania serwera slave. Wszelkie próby modyfikacji danych będą przesyłane na serwer główny, ale pobieranie danych zawsze będzie odbywać się ze slave’a. Z racji tego, że korzystamy z protokołu HTTPS, musimy włączyć SSLProxyEngine dla domeny, którą będziemy wykorzystywali do komunikacji z repozytoriami.

ppp

Polecenie zakończy się komunikatem:

Dodatkowo, możemy zweryfikować czy synchronizacja została skonfigurowana prawidłowo przy pomocy polecenia:

Polecenie zwróci adres głównego repozytorium. W naszym przypadku to:

Synchronizujemy repozytorium:

W moim repozytorium była tylko jedna rewizja, więc synchronizacja zakończyła się komunikatem:

Zanim zaczniemy testować zatwierdzanie zmian, upewniamy się, że Apache posiada zainstalowany i aktywny moduł proxy i proxy_http:

Tworzymy kopie robocze repozytorium z serwera master oraz slave. Modyfikujemy kopię roboczą pobraną z serwera slave i zatwierdzamy zmiany. Zatwierdzanie zmian powinno wykonać się poprawnie. Teraz możemy uaktualnić kopię z serwera master, ta operacja również wykona się poprawnie, ale odświeżenie kopii z serwera slave zakończ się błędem:

Sprawdzenie dziennika błędów Apache’a da nam wskazówkę co poszło nie tak:

Automatyczną synchronizację możemy wykonywać przy pomocy hooków w głównych repozytoriach.

Aby uniknąć pytań o zapisywanie haseł:

w pliku /root/.subversion/servers należy odszukać linię „# store-plaintext-passwords = no” i usunąć komentarz (znak #) z początku linii.

Błąd związany z wersją

Rozwiązaniem poniższego problemu:

Jest skasowanie blokady:

Linki

http://www.slideshare.net/normanmaurer/apacheconeusvnreplication

http://stackoverflow.com/questions/4077601/svnsync-couldnt-get-lock-on-destination-repos

Dodaj komentarz

Twój adres email nie zostanie opublikowany.