2009-05-29 12 views
75

Niedawno przeniosłem serwer SVN, a teraz próbuję przesłać działające kopie z mojego komputera na nowy serwer. Ale dostaję najdziwniejszy błąd. zrobić:Błąd przełącznika svn - to nie jest to samo repozytorium.

svn switch http://99.99.99.new/svn/company/project/trunk/web 

ale ja dostać

svn: 'http://99.99.99.old/svn/company/project/trunk/web' 
is not the same repository as 
'http://99.99.99.new/svn/company/project' 

ruch został wykonany z wysypiska i importu ... i korzeń repo jest http://99.99.99.new/svn/company/project

Czy macie jakieś pomysły co może być nie tak? dziękuję

Odpowiedz

127

spróbuj

svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web 

Jak zauważył Sporino w komentarzach, ponieważ Subversion 1.7, istnieje oddzielna komenda relocate:

svn relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web 
+0

dzięki .. to działało: D –

+0

+1, jak faktycznie znalazłem to patrząc na odpowiedź :) – Unreason

+0

+1, za samo jak wyżej –

1

Musisz użyć --relocate opcja:

svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web 

patrz svnbook dla r więcej szczegółów.

+0

dzięki za sugestię, ale jak napisał BastardSaint, musisz podać zarówno od, jak i do URLS –

+1

Po prostu więcej słabego projektu interfejsu użytkownika, który irytuje mnie o subwersji i SVK. Mogą istnieć egzotyczne przypadki użycia, które wymagają określenia dwóch adresów URL, ale narzędzia powinny po prostu przyjąć tę domyślną wartość. W SVK, na przykład, nie powinienem * POTRZEB * * określać źródło scalenia i cel, ale robię to. –

4

Użyj parametru wiersza poleceń relocate do komendy switch.

svn switch documentation

Czasami administrator może zmienić lokalizację „baza” z repozytorium - innymi słowy, zawartość repozytorium nie zmienia, ale główny adres URL używany do osiągnięcia korzenia repozytorium ma. Na przykład nazwa hosta może się zmienić lub schemat adresu URL, a może tylko ścieżka prowadząca do repozytorium. Zamiast kasowania nowej kopii roboczej, możesz mieć polecenie przełącznika svn "przepisać" początki wszystkich adresów URL w kopii roboczej. Użyj polecenia --relocate, aby dokonać podstawienia. Żadna zawartość pliku nie jest zmieniana, ani też nie kontaktuje się z repozytorium. Jest to podobne do uruchamiania skryptu perl nad twoją kopią roboczą .svn/katalogi, które działają s/OldRoot/NewRoot /.

23

Ponadto w TortoiseSVN dostępna jest opcja "Przeniesienie", z której należy korzystać w takich sytuacjach (zamiast opcji "Przełącz").

+0

zgodził ... ale byłem na ubuntu, więc opcje nie były dostępne :) –

+1

+1 za pomoc żółwia. – jachguate

7

Moim najlepszym sposobem na to jest przeniesienie SVN to:

svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \ 
         new_url_or_repository 

W ten sposób, przy użyciu odpowiedniego stary URL z komendy svn info, to na pewno nie wprowadzić złego, który jest jednym z powszechne erros.

Jeśli wszystko jest w porządku, zostanie wyświetlony monit z danymi auth dla nowej lokalizacji, jeśli są różne.

Po wydaniu polecenia, należy dokładnie sprawdzić, że zmiana została zastosowana patrząc parametru URL, wydawanie

svn info 

Po przeniesieniu, zaktualizuj swoją kopię roboczą, aby sprawdzić, czy wszystko jest w porządku:

svn update 

Moja 2c ..

Powiązane problemy