Po prostu musiałem sam rozwiązać ten problem. Mam komputer z systemem Windows XP z oddzielnym serwerem Windows obsługującym serwer VisualSVN .
Mam też zainstalowany TortoiseHG, a także klienta wiersza poleceń CollabNet Subversion .
<Enable Convert Extension w/ Tortoise Hg 2>
Wielkie dzięki dla bgever za wskazanie w komentarzach, że dzięki TortoiseHg 2.0 włączenie rozszerzenia konwersji jest łatwiejsze niż kiedykolwiek. Jak mówi
Dzięki TortoiseHG 2.0 stało się to znacznie prostsze: uruchom Środowisko pracy TortoiseHG z menu Start. Wybierz Plik -> Ustawienia. Wybierz rozszerzenia z listy. Zaznacz pole wyboru „konwertuj” i kliknij OK. Otóż to! Nie trzeba już próbować generować pliku konfiguracyjnego i przeszukiwać go w systemie plików. - bgever 11 marca o 7:56
</Enable Convert Extension w/ Tortoise Hg 2>
<Enable Convert Extension Manually>
Aby przekonwertować repozytorium z SVN na HG, wykonałem następujące kroki:
1) Otwórz C: \ Program Files \ TortoiseHg \ Mercurial.ini
EDYTOWAĆ
FYI - Tortoise Hg migrował ten plik do
- XP lub starszy - C: \ Documents and Settings \ NAZWA UŻYTKOWNIKA \ Mercurial.ini
- Vista lub nowsza - C: \ Users \ NAZWA UŻYTKOWNIKA \ Mercurial.ini
Ten plik będzie w większości pusty, a ty po prostu wymienisz tam, co chcesz zastąpić. Jeśli to masz, po prostu dodaj te dwie linie na samym końcu pliku:
[extensions]
convert =
2) Wyszukaj wiersz rozpoczynający się od
[rozszerzenia]
3) Poniżej zobaczysz listę słów kluczowych, zakomentowanych za pomocą średnika (;) w każdym wierszu
4) Znajdź linię, która mówi
; konwertować =
i usuń średnik, aby brzmiał
konwertować =
</Enable Convert Extension Manually>
5) Otwórz wiersz polecenia i przejdź do katalogu, w którym chcesz utworzyć nowy folder hg (proces utworzy nowy folder o nazwie yoursvnreponame-hg w katalogu, w którym jest otwarty wiersz polecenia).
6) Użyj tego polecenia
hg konwertuj plik: /// y: / yoursvnreponame
Odkryłem, że narzędzie do konwersji może mieć problemy z repozytoriami sieciowymi, więc musiałem zmapować do niego dysk, ale to zadziałało dobrze dla mnie.
źródło
Mercurial ma do tego wbudowane rozszerzenie konwersji .
źródło
Aby przekonwertować SVN Repo na HG Repo ORAZ skopiować je na inny serwer, będziesz potrzebować kilku rzeczy.
convert
rozszerzenie do Tortoise. Uruchom Środowisko pracy TortoiseHG z menu Start. WybierzFile -> Settings
. WybierzExtensions
z listy. Zaznacz poleconvert
wyboru i kliknij OK.Najpierw konwersja…
\\server\folder
nie mapuj samego folderu SVN Repo. Mapuj folder tuż nad nim) Nadaj zmapowanemu dyskowi literę, na przykładY:\
CD /D Y:\
Y:\
znaku zachęty wpisz:hg convert y:/RepoName
(użyj nazwy bieżącego repozytorium) Uważaj na ukośniki w przód iw tył. Ten w poleceniu to ukośnik. Ponadto, jeśli nazwa zawiera spacje, umieść ją w cudzysłowie. (tj.Y:/"My Repo folder"
)Po drugie klonowanie…
File -> Clone Repository
źródło
init
pierwszego repozytorium?Nikt nadal nie wspomina o hgsubversion ( Extension Wiki ), który może to zrobić bez prawie żadnego bólu głowy (z wyjątkiem rzadkich przypadków i konkretnego drzewa).
Po prostu dodaj rozszerzenie, włącz je i
hg clone SVN_REPO
do lokalnego repozytorium Mercurialźródło
To jest w FAQ TortoiseHg :
Więc jest to najwyraźniej możliwe - używam Linuksa, więc sam nie próbowałem.
źródło
Właśnie przekonwertowałem zdalne repozytorium SVN z uwierzytelnianiem HTTP na repozytorium Mercurial i powiem ci, że nie ma zbyt wielu dokumentacji, jak to zrobić. Musiałem pobrać źródło Mercurial i zainstalować je samodzielnie, używając pakietu źródłowego, aby wiązania SVN działały prawidłowo.
Zainstalowałem to tak:
Co działało dobrze na moim serwerze Server 2003. Mogę teraz przekonwertować repozytorium SVN we właściwy sposób, wykonując coś takiego:
Dokumentacja ConvertExtension na stronie Mercurial nie jest zbyt jasna, ale mówi tak:
Więc teraz używam wersji samodzielnej do konwersji i TortoiseHg do rzeczywistej pracy VCS.
źródło
lepiej późno niż wcale ...
Dwie odpowiedzi w cenie jednej ...
Jeśli jest to publiczne repozytorium o otwartym kodzie źródłowym, możesz po prostu użyć http://svn2github.com/add/, co zajęło około pół godziny, aby sklonować to repozytorium do GitHib, a następnie po prostu przeciągnąć to do Hg.
Zaletą używania
hg convert
jest to, że można go wznowić. Konwersja SVN na Hg może zająć kilka dni . Jeśli to zatrzymasz, zostanie wznowione od miejsca, w którym zostało przerwane.Poniżej znajduje się plik wsadowy, który napisałem, ponieważ Codeplex SVNbridge śmieci. Repozytorium w tym przykładzie zajęło kilka dni, aby pobrać całą historię (jestem w Australii, więc opóźnienie mogło być czynnikiem). Chciałbym pomyśleć, że dał gdzieś serwer TFS dobre bicie.
Ten plik wsadowy można uruchomić w dowolnym momencie, aby pobrać aktualizacje ze źródła SVN, jeśli są jedynymi na świecie, które nadal używają SVN. Nie testowałem tego, więc zobacz, co się stanie, jeśli to zrobisz, więc na twoim miejscu porzuciłbym oryginalną gałąź, jeśli zamierzasz edytować repozytorium.
Chodzi o
robocopy shamap
to, aby zachować historię SVN, jeśli sklonujesz repozytorium Hg, shamap jest efemeryczny - sprawdź plik wsadowy i shamap (zrobiłbym to na nowej gałęzi).partia ...
źródło
Korzystanie z
convert
rozszerzenia Mercurial:convert=
do[extensions]
sekcji .hgrc w ten sposób:sudo apt-get install python-subversion
hg convert
poleceniehg convert -h
aby uzyskać pomochg convert http://[svnserver]/[Project] --source-type svn [DestinationDir]
(patrz uwaga 2)hg push https://[mercurialserver]/[Project]
uwaga : możesz nawet powtórzyć polecenie hg convert, aby uwzględnić nowe zmiany wprowadzone w repozytorium svn po poprzedniej konwersji.
uwaga 2 : Kiedy hg convert nie działa przy użyciu
http://
lubsvn://
możesz najpierw pobrać repozytorium Subversion (lub zaktualizować istniejące) i przekonwertować używając lokalnego pobierania; przykład:hg convert [DirectoryOfLocalCheckout] --source-type svn [DestinationDir]
źródło