Jak zaktualizować v2 do v3 systemu plików FSFS z subwersją

9

Po pierwsze, próbuję ponownie zintegrować gałąź z bagażnikiem (używając TortoiseSVN), ale pojawia się komunikat o błędzie „Zapytanie o informacje o scaleniu wymaga wersji 3 schematu systemu plików FSFS; system plików E: / MyRepository / używa tylko wersji 2”.

Czy naprawdę nie było możliwe ponowne zintegrowanie gałęzi we wcześniejszych wersjach subversion? A może jest to inny sposób?

W każdym razie, jak mogę zaktualizować system plików z wersji 2 do wersji 3?

cbp
źródło

Odpowiedzi:

6

Nie określiłeś wersji Subversion, którą działa twój serwer. Ale na podstawie wiadomości podanej w pytaniu jest to prawdopodobnie wersja 1.4.x lub starsza. Nie pamiętam, czy podano polecenie aktualizacji do konwersji z 1.4.x na 1.5.x, ale pewnym sposobem na przeniesienie repozytorium z wersji 2 do wersji jest zrzut i załadowanie. Ale to nie ma większego znaczenia, i tak będziesz chciał zainstalować wersję 1.6.x, aby korzystać z najnowszej wersji. Oto kroki, które musisz wykonać:

  • Uaktualnij do Subversion 1.6.x, jeśli jeszcze tego nie zrobiłeś
  • Zrzuć swoje istniejące repozytorium za pomocą zrzutu svnadmin
  • Utwórz nowe repozytorium, nazwij je _new
  • Załaduj nowe repozytorium ze zrzutem starego za pomocą svnadmin load
  • Skopiuj plik UUID ze starego repozytorium do nowego repozytorium
  • zmień nazwę starego repozytorium na _old
  • zmień nazwę nowego repozytorium na

Zobacz także często zadawane pytania dotyczące Subversion http://subversion.apache.org/faq.html#dumpload w celu uzyskania konkretnego przykładu.

To powinno Cię załatwić, a plik UUID powstrzyma twoich klientów przed szaleniem. Wykonaj aktualizację svn, aby się upewnić.

jgifford25
źródło
2
z svnadmin help loadkomunikatem: --force-uuid : set repos UUID to that found in stream, if any. W skrócie: nie trzeba bawić się plikami
Hubert Kario
@Hubert Kario: Tak, wiersz poleceń ma tę opcję. Ale nie wszyscy klienci GUI tak robią. A jeśli możesz to zrobić po stronie serwera, ułatwi to użytkownikom. Ale będę pamiętać o tym przełączniku następnym razem, gdy napotkam ten problem. Dzięki za wskazówkę!
jgifford25
Tworząc nowe repozytorium, zachowaj ostrożność przy ustawianiu uprawnień. Na przykład, jeśli masz dostęp repozytorium poprzez apache mod_svn, Apache działa pod użytkownika „www”, grupa „www” i jesteś zalogowany jako „Fred”, prawdopodobnie trzeba będzie coś jak: sudo chown -R fred:www myrepositoryrozszerzone o sudo chmod g+wcelu myrepository/db/repcache.dbimyrepository/db/uuid
xgretsch
8

Zrzut / ładowanie nie jest wymagane do aktualizacji repozytoriów Subversion. Użyj polecenia svnadmin upgrade:

svnadmin upgrade <path-to-repos>

UWAGA: aktualizacja svnadmin „wykonuje tylko minimalną ilość pracy wymaganej do osiągnięcia tego, jednocześnie zachowując integralność repozytorium. Podczas gdy zrzut i kolejne ładowanie gwarantują najbardziej zoptymalizowany stan repozytorium, aktualizacja svnadmin nie wykonuje”. - patrz także dokumentacja aktualizacji svnadmin

Ivan Zhakov
źródło
1
Należy jednak pamiętać, że to „wykonuje tylko minimalną ilość pracy niezbędnej do osiągnięcia tego, jednocześnie zachowując integralność repozytorium. Podczas gdy zrzut i kolejne ładowanie gwarantują najbardziej zoptymalizowany stan repozytorium, aktualizacja svnadmin nie”. - patrz także svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.upgrade.html
Jörg
1
Należy również pamiętać, że „zawsze należy wykonać kopię zapasową swojego repozytorium przed” przy użyciu aktualizacji svnadmin, podczas gdy w przypadku zrzutu / obciążenia masz kopię zapasową w sposób niejawny.
Jörg
5

Ivan ma dobrą wskazówkę, która działa, próbowałem i jest to bardzo proste.

svnadmin upgrade <path-to-repos>

Jedną z rzeczy, których mi brakowało w przykładzie Ivans, które mogą być przydatne dla innych, są:

Dawny.

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)

Nie kieruj svnadmin do katalogu db, ale do katalogu zawierającego katalog db.

Za G.
źródło