Jeśli chcesz przenieść repozytorium i zachować historię, prawdopodobnie będziesz potrzebować dostępu do systemu plików na obu hostach. Najprostszym rozwiązaniem, jeśli twój backend to FSFS (domyślny w ostatnich wersjach), jest utworzenie kopii systemu plików całego folderu repozytorium.
Jeśli masz zaplecze Berkley DB, jeśli nie jesteś pewien, jaki jest twój backend lub jeśli zmieniasz numery wersji SVN, będziesz chciał użyć svnadmin, aby zrzucić stare repozytorium i załadować je do nowego magazyn. Użycie svnadmin dump
da ci kopię zapasową jednego pliku, którą możesz skopiować do nowego systemu. Następnie możesz utworzyć nowe (puste) repozytorium i użyć svnadmin load
, które zasadniczo odtworzy wszystkie zatwierdzenia wraz z metadanymi (autor, znacznik czasu itp.).
Możesz przeczytać więcej o procesie zrzutu / ładowania tutaj:
http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate
Ponadto, jeśli to zrobisz svnadmin load
, upewnij się, że korzystasz z tej --force-uuid
opcji, w przeciwnym razie ludzie będą mieli problemy z przejściem do nowego repozytorium. Subversion używa UUID do wewnętrznej identyfikacji repozytorium i nie pozwala na przełączenie kopii roboczej do innego repozytorium.
Jeśli nie masz dostępu do systemu plików, mogą istnieć inne opcje stron trzecich (lub możesz coś napisać), które pomogą ci w migracji: zasadniczo musiałbyś użyć dziennika svn, aby odtworzyć każdą wersję w nowym repozytorium, i następnie popraw metadane. Będziesz potrzebować skryptów przechwytujących przed revprop-change i post-revprop-change, aby to zrobić, które zakładają dostęp do systemu plików, więc YMMV. Lub, jeśli nie chcesz zachować historii, możesz użyć kopii roboczej do importu do nowego repozytorium. Ale miejmy nadzieję, że tak nie jest.
svnrdump dump https//remote/svn/trunk > repos.dump
. W większości przypadków polecenie działa również z SVN 1.6, ale mogą wystąpić pewne problemy, zobacz dokumentację. Działa zarówno w * nix, jak i Windows.rsvndump
działało świetnie dla mnie migracja repozytorium z svnrepository.com na serwer Ubuntu, który kontroluję.Jak zainstalować i używać rsvndump na Ubuntu:
Zainstaluj brakujące zależności (biblioteki „APR” i Subversion)
Zainstaluj rsvndump
Zrzuć zdalne repozytorium SVN do pliku lokalnego
Utwórz nowe repozytorium i wczytaj do lokalnego pliku zrzutu
źródło
svn switch --relocate http://my.svnrepository.com/svn/old_repo http://newserver.com/svn/my_new_repo
Możesz także użyć svnsync. Wymaga to jedynie dostępu tylko do odczytu do repozytorium źródłowego
więcej na svnbook
źródło
Fragment mojej notatki z bloga dla siebie :
Teraz możesz zaimportować plik zrzutu, np. Jeśli migrujesz między maszynami / wersjami subversion. np. gdybym utworzył plik zrzutu z repozytorium źródłowego i załadował go do nowego repozytorium, jak pokazano poniżej.
Polecenia dla systemów uniksopodobnych (z terminala):
Polecenia dla systemów Microsoft Windows (z powłoki cmd):
źródło
Narzędziem do tego byłoby
Ale żeby to zadziałało, potrzebujesz dostępu do systemu plików do repozytorium. A kiedy już to zrobisz (i pod warunkiem, że repozytorium jest w formacie FSFS), możesz po prostu skopiować repozytorium do nowej lokalizacji (jeśli jest w formacie BDB, zdecydowanie zalecamy zrzut / załadowanie).
Jeśli nie masz dostępu do systemu plików, musisz poprosić dostawcę repozytorium o dostarczenie zrzutu (i zmusić go do usunięcia repozytorium - i mieć nadzieję, że się zgodzą)
źródło
Jeśli nie masz dostępu do plików w repozytorium, wolę rsvndump (zdalny zrzut repozytorium Subversion), aby utworzyć plik zrzutu.
źródło
Zasadniczo istnieje wiele sposobów wykonania zadania. Temat jest szczegółowo omówiony w SVNBook | Migracja danych repozytorium w inne miejsce , więc sugeruję przeczytanie sekcji książki.
Oto krótki opis dostępnych opcji:
To zależy od twojego środowiska, ale jest duża szansa, że możesz po prostu skopiować repozytorium na nowy serwer i będzie działać. Musisz zweryfikować skrypty przechwytujące repozytorium po skopiowaniu repozytorium, aby upewnić się, że działają zgodnie z oczekiwaniami.
Możesz użyć poleceń
svnadmin dump
isvnadmin load
, ehm, wygenerować pełny zrzut, a następnie załadować go do innego repozytorium na innym serwerze. Będziesz potrzebowałsvnadmin create
nowego, czystego repozytorium, aby załadować zrzut do niego. Należy pamiętać, że podejście to dotyczy tylko historii repozytorium i nie przenosi skryptów przechwytujących ani plików konfiguracyjnych repozytorium ! Ponadto, aby zrzucić je, musisz mieć dostęp do systemu plików do odczytu z oryginalnego repozytorium.Od Subversion 1.7
svnrdump
narzędzie jest dostępne. Ogólnie rzecz biorąc, naśladujesvnadmin dump
isvnadmin load
funkcjonuje, ale działa zdalnie. Nie musisz mieć dostępu do systemu plików do odczytu / zapisu do oryginalnych i docelowych repozytoriów, ponieważ narzędzie działa zdalnie jak klient Subversion, np. Przez protokół HTTPS. Musisz więc mieć dostęp do odczytu do oryginalnego repozytorium i do odczytu / zapisu w docelowym.Inną opcją jest użycie
svnadmin hotcopy
polecenia. Polecenie jest głównie używane do tworzenia kopii zapasowych, tworzy pełną kopię repozytorium, w tym konfigurację i skrypty przechwytujące. Możesz wtedy przenieść repozytorium skopiowane na gorąco na inny serwer.źródło
Możesz też użyć
svnadmin hotcopy
polecenia:Pobiera pełną kopię zapasową z repozytorium, w tym wszystkie hooki, pliki konfiguracyjne itp.
Więcej w SVN Book
źródło
Zakładając, że masz niezbędne uprawnienia do uruchomienia svnadmin, musisz użyć poleceń dump i load .
źródło
Znalazłem artykuł o tym, jak przenieść repozytoria svn z usługi hostingowej do innej i jak tworzyć lokalne kopie zapasowe:
Zdefiniuj, gdzie będziesz przechowywać swoje repozytoria:
svnadmin create $MYREPO
Utwórz plik przechwytujący i uczyń go wykonywalnym:
Teraz możemy rozpocząć import repozytorium za pomocą
svnsync
, który zainicjuje repozytorium docelowe do synchronizacji z innego repozytorium:I ostatni szlif, aby przenieść wszystkie oczekujące poprawki do miejsca docelowego ze źródła, z którym został zainicjowany:
Masz teraz lokalne repozytorium svn w
~/repo
katalogu.Źródło:
źródło
Pomoc dotyczącą migracji repozytoriów SVN można znaleźć w rozdziale 5. Administrowanie repozytorium, Migracja repozytorium .
To podejście wymaga dostępu do svnadmin.
źródło