2012-12-19 16 views
75

Moja obecna struktura SVN:Zmień repozytorium SVN URL

Path: . 
URL: svn://someaddress.com.tr/project 
Repository Root: svn://someaddress.com.tr 
Repository UUID: ------------------------------------- 
Revision: 10297 
Node Kind: directory 
Schedule: normal 
Last Changed Author: ---- 
Last Changed Rev: 9812 
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010) 

Ale nasz projekt (stąd usługa SVN) będą pracować nad sub.someaddress.com.tr zamiast someaddress.com.tr (someaddress.com.tr zostanie przekierowany do innego wkrótce).

Ponieważ jest to serwer programistyczny, nie mogłem być pewien, co robić. Czy muszę użyć svn switch lub svn switch --relocate? Ponadto, będę musiał zmienić katalog główny svn someaddress.com.tr lub gałąź projektu someaddress.com.tr/project?

Odpowiedz

146

Biorąc pod uwagę, że serwer Subversion zostaną przeniesione do nowego aliasu DNS: sub.someaddress.com.tr:

  • z Subversion 1.7 lub wyższej, należy svn relocate. Zmiana lokalizacji jest używana, gdy zmienia się lokalizacja serwera SVN. switch jest używany tylko wtedy, gdy chcesz zmienić lokalną kopię roboczą na inną gałąź lub inną ścieżkę. Jeśli używasz TortoiseSVN, możesz wykonać instrukcje od TortoiseSVN Manual. Jeśli korzystasz z interfejsu wiersza poleceń SVN, zobacz this section of SVN's documentation. Polecenie powinno wyglądać następująco:

    svn relocate svn://sub.someaddress.com.tr/project

  • nadal korzystać /project zważywszy, że rzeczywiste zawartość repozytorium prawdopodobnie nie ulegnie zmianie.

Uwaga: svn relocate nie jest dostępny przed wersją 1.7 (dzięki ColinM dla informacji). W starszych wersjach należy użyć:

svn switch --relocate OLD NEW 
+33

svn Przeprowadzka nie jest dostępny pre 1.7. Dla pre 1.7 używałeś 'svn switch --relocate OLD NEW' – ColinM

+0

Dodatkowe linki TortoiseSVN są bardzo pomocne, dzięki temu – MOnsDaR

+0

Nie wiedziałem o poleceniu' switch', cała dokumentacja, którą znalazłem w Internecie dotyczy nowszych wersji. –

5

w moim przypadku, polecenie svn relocate (jak również svn switch --relocate) nie powiodło się z jakiegoś powodu (być może repo nie została przeniesiona poprawnie, lub coś innego). Stawiłem czoła temu błędowi:

$ svn relocate NEW_SERVER 
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46' 

Nie chciałem ponownie pobrać całego repozytorium, więc znalazłem obejście. W moim przypadku zadziałało, ale ogólnie mogę sobie wyobrazić, że wiele rzeczy może się zepsuć (więc albo wykonaj kopię zapasową swojej kopii roboczej, albo bądź gotowy do ponownego sprawdzenia całego repozytorium, jeśli coś pójdzie nie tak).

Adres repo i jego identyfikator UUID są zapisywane w pliku bazy danych SQLite .svn/wc.db w kopii roboczej. Po prostu otwórz bazę danych (np. W przeglądarce SQLite), przeglądaj tabelę REPOZYTORIUM i zmień wartości kolumn root i uuid na nowe. Możesz znaleźć UUID nowego repo poprzez wydanie svn info NEW_SERVER.

Ponownie potraktuj to jako metodę ostateczną.

+0

@IgorGanapolsky: Czy mógłbyś być bardziej konkretny? –

+1

Jeśli uważnie przeczytasz mój wpis, nie sugeruję uruchamiania żadnych poleceń. Sugeruję edycję SQLite DB. –

3

grepping URL przed i po może dać ci spokój:

svn info | grep URL 

    URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    Relative URL: (...doesn't matter...) 

i sprawdzanie od wersji (do> 1.7) w celu zapewnienia, svn relocate jest dobrą rzeczą, aby użyć:

svn --version 

Wreszcie, dodając do powyższego, jeżeli repozytorium zmiana url obejmuje również zmianę protokołu może być konieczne, aby podać przed i po url (również see here)

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal 

wszystko w jednym wierszu course.Thereafter, uzyskać dobre wrażenie, że wszystko poszło gładko:

svn info | grep URL: 

Jeśli masz na to ochotę, trochę więcej pewności siebie, nowa svn repo URL jest podłączony i pracy:

svn status --show-updates 
svn diff 
Powiązane problemy