Jak migrować / konwertować z SVN na Mercurial (hg) w systemie windows
Szukam narzędzia do migracji kilku repozytoriów SVN do Mercurial, z historią, etykietami i tak dalej.
Używam TortoiseHg (Windows x32), więc convertextensions są odrzucane. Jest kilka informacji na temat tego, jak wykonać ten proces na Linuksie (hgsvn), ale nie mam dostępnej maszyny z Linuksem.
Czy Mogę używać skryptów Pythona w Windows? Jeśli tak, to co muszę zrobić? Lub, jakie inne narzędzia mogę użyć do tego procesu?
Zasadniczo, jak Mogę przekonwertować projekt SVN na Mercurial?
9 answers
Po prostu musiałem rozwiązać ten problem sam. Mam komputer z systemem Windows XP z oddzielnym serwerem Windows Server hosting VisualSVN Server.
Mam również zainstalowany TortoiseHGoraz Klient wiersza poleceń CollabNet Subversion.
<Enable Convert Extension w/ Tortoise Hg 2>
Wielkie podziękowania dla bgever za zaznaczenie w komentarzach, że z TortoiseHg 2.0 włączenie rozszerzenia convert jest łatwiejsze niż kiedykolwiek. Jak mówi
Z TortoiseHG 2.0 został wykonany dużo prostsze: Start TortoiseHG Workbench z menu Start. Wybierz Plik -- > Ustawienia. Wybierz Rozszerzenia z listy. Sprawdź "Konwertuj" pole wyboru i kliknij OK. To jest to! Nie. trzeba spróbować wygenerować config plik i przeszukaj go w pliku system. - bgever Mar 11 at 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) Otwarte C:\Program Files\TortoiseHg\Mercurial.ini
EDIT
FYI - Tortoise Hg przeniósł ten plik do
- XP lub starszy - C:\Documents and Settings\USERNAME\Mercurial.ini
- Vista lub później - C:\Users\USERNAME\Mercurial.ini
Ten plik będzie w większości pusty, a ty po prostu wymienisz to, co chcesz zastąpić. Jeśli to jest to, co masz, proste dodaj te dwie linie na samym końcu pliku:
[extensions]
convert =
2) Szukaj linia zaczynająca się od
[rozszerzenia]
3) pod nim zobaczysz listę słów kluczowych, komentowanych średnikiem (;) w każdej linii
4) znajdź linię, która mówi
; convert =
I usuń średnik, aby odczytał
Convert =
</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, do którego jest otwarty wiersz polecenia).
6) Użyj tego polecenia
Hg convert file:/ / / y: / yoursvnreponame
Odkryłem, że narzędzie do konwersji może mieć problemy z sieciowymi repozytoriami, więc musiałem mapować dysk do niego, ale to działało dobrze dla mnie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 08:36:50
- uruchamianie serwera svn na localhost
- Hg convert svn: / / localhost / your_repo
- zrobione, ponieważ wiązania svn potrzebne tylko dla file: / / protocol
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-22 11:29:49
Mercurial ma wbudowane rozszerzenie Konwersji dla tego .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 11:24:22
Aby przekonwertować repo SVN na repo HG i skopiować go na inny serwer, potrzebujesz kilku rzeczy.
- TortoiseHG zainstalowany. (Sprawdź, która wersja jest obecnie używana)
- Zainstalowany Python. (Sprawdź, która wersja jest obecnie używana)
- Moduły Pythona (można je znaleźć http://pysvn.tigris.org/project_downloads.html )
- będziesz musiał dodać rozszerzenie
convert
do Tortoise. Start the TortoiseHG Workbench from menu Start. SelectFile -> Settings
. WybierzExtensions
z listy. Zaznacz pole wyboruconvert
i kliknij OK.
Najpierw konwersja...
- najlepiej jest zmapować Folder, w którym znajduje się aktualny Repo SVN na komputer, na którym pracujesz. (tzn.
\\server\folder
nie Mapuj samego folderu repo SVN. Mapuj folder tuż nad nim) nadaj zmapowanemu dyskowi literę, np.Y:\
- Otwórz wiersz polecenia i wpisz:
CD /D Y:\
- At the
Y:\
prompt type:hg convert y:/RepoName
(Użyj nazwy obecny Repo) należy uważać na ukośniki do przodu i do tyłu. Ten w Komendzie to ukośnik. Ponadto, jeśli nazwa ma spacje, umieść nazwę w cudzysłowach. (tj.Y:/"My Repo folder"
) - teraz powinien być uruchomiony i utworzy inny folder obok Starego. A folder hg powinien być w środku. NIE ZOSTANIE ZAINICJOWANY I NIE INICJUJ!
- konwersja została zakończona.
Drugie klonowanie ...
- Otwórz Stół Roboczy TortoiseHG. Przejdź do
File -> Clone Repository
- źródło: wprowadź pełną ścieżkę konwersji repo.
- Destination: wprowadź pełną ścieżkę, w której chcesz sklonować repo. Nie jest konieczne tworzenie folderu w nowym miejscu docelowym, ponieważ proces klonowania utworzy go i zainicjalizuje.
- Dodaj uprawnienia do nowego sklonowanego folderu. Koniec z Tobą!!!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 23:35:05
Nikt jeszcze nie wspomina hgsubversion (Extension Wiki), która może to zrobić bez prawie żadnego bólu głowy (z wyjątkiem rzadkich przypadków i konkretnego drzewa).
Wystarczy dodać rozszerzenie, włączyć je i hg clone SVN_REPO
do lokalnego mercurial repo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-08 12:08:55
To jest w TortoiseHg FAQ :
Jak mogę przekonwertować repozytorium subversion na Mercurial?
Musisz zainstalować narzędzia wiersza poleceń svn-win32-1.4.6, a następnie dodać je do swojej ścieżki. Następnie należy włączyć rozszerzenie Konwertuj. W tym momencie powinieneś być w stanie użyć polecenia '
hg convert
' do wykonania konwersji. Problemy/pytania dotyczące rozszerzenia convert prosimy kierować na listę dyskusyjną Mercurial lub#mercurial
nairc.freenode.net
.
Więc najwyraźniej możliwe. używam Linuksa, więc sam nie próbowałem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-26 21:10:23
Właśnie przekonwertowałem zdalny repo SVN z http auth na Mercurial repo 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, w ten sposób powiązania SVN będą działać prawidłowo.
Zainstalowałem go tak:
python setup.py install
Który działał dobrze na moim serwerze 2003 box. Mogę teraz przekonwertować repo SVN w poprawny sposób, robiąc coś takiego:
python c:\python26\scripts\hg convert <remote repo>
The dokumentacja ConvertExtension na stronie Mercurial nie jest zbyt jasna, ale mówi tak:
Nie ma sposobu na zainstalowanie Wiązania Subversion do wbudowanego [Mercurial ' s] Biblioteka Pythona. Więc będziesz musiał użyć Mercurial zainstalowany na szczycie samodzielny Python
Więc teraz używam tylko samodzielnej wersji do konwersji, a TortoiseHg do rzeczywistej pracy VCS.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-12 18:48:31
Lepiej późno niż wcale ...
Dwie odpowiedzi w cenie jednej ...Jeśli jest to repo publiczne, open-source można po prostu użyć http://svn2github.com/add / co zajęło około pół godziny sklonowanie tego repo do Githiba, a następnie wciągnięcie go do Hg.
Zaletą stosowania
hg convert
czy to może być wznowione. Konwersja SVN na Hg może potrwać dni. Jeśli to zatrzymasz, powróci tam, gdzie zostało. wyłącz.
Poniżej jest plik wsadowy, który napisałem, ponieważ Codeplex SVNbridge śmieci. Repo w tym przykładzie zajęło kilka dni, aby pobrać całą historię(jestem w Australii, więc opóźnienie może być czynnikiem). Myślę, że dało to serwerowi TFS dobre lanie.
Ten plik wsadowy może być uruchomiony w dowolnym momencie, aby pobrać aktualizacje ze źródła SVN, jeśli zdarzy się, że są jedynymi na ziemi, które nadal używają SVN. Nie testowałem tego, więc zobaczymy, co się stanie, jeśli zrób to, więc na Twoim miejscu porzuciłbym oryginalną gałąź, jeśli zamierzasz edytować repo.
The robocopy shamap
stuff is to keep the SVN history if you clone the Hg repo, shamap is ephemeral-check the batch file & shamap in (I ' d do that on a new branch).
Seria...
@echo off
mode con:cols=100 lines=800
:: Change the SVN remote name here
::
set remote=https://cinch.svn.codeplex.com/svn
::
title Fetching SVN from %remote%. This could take...DAYS
echo .
echo Fetching SVN checkins from %remote%
echo .
echo Dependencies: Tortoise Hg and hg.exe in the Path would be ideal.
echo using hg convert
echo .
echo First, I will make a backup of shamap in the hg repo folder.
echo If shamap in .hg\ is newer then it will be copied to the repo.
echo You should commit it so hg clones of this repo work with this.
echo Commit this .BeeyATch file as well.
echo shamap keeps track of what has been fetched from SVN.
echo ok, that ends the educational part of this script...
echo Now I will fetch SVN changes from
echo %remote%
echo ...
echo ...(this could take quite some time)...
echo ...DAYS...yes...DAYS
echo ...especially if it's fecking Codeplex SVN...
echo .
echo If this craps out just run it again - it will resume from where it left off.
echo and fetch the rest...eventually
echo .
echo Control C to abort or any other key to start:
echo .
pause
echo .
:: http://mercurial.selenic.com/wiki/ConvertExtension <== see for details of shamap
:: copy the shamap from the original convert into the .hg folder unless it is already there & newer
:: don't panic if shamap is much bigger than the original - diff it to see why
robocopy .\ .\.hg\ shamap /XO
robocopy .\.hg\ .\ shamap /XO
echo .
hg convert --verbose --debug %remote% "%CD%"
echo .
echo .
echo Finished fetching from %remote%
title Finished fetching from %remote%
echo Any key to Exit
echo .
pause
exit
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-24 20:36:04
Za pomocą convert
rozszerzenie Mercurial:
- Enable convert extention; add
convert=
to the[extensions]
section of .hgrc like this:[rozszerzenia]
convert= - Linux potrzebuje dodatkowych wiązań Pythona:
sudo apt-get install python-subversion
- wykonaj
hg convert
polecenie- Zobacz
hg convert -h
po pomoc - przykład:
hg convert http://[svnserver]/[Project] --source-type svn [DestinationDir]
(Zob. Uwaga 2)
- Zobacz
- Push do nowo utworzonego repozytorium Mercurial:
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: gdy konwersja hg nie działa za pomocą http://
lub svn://
, możesz najpierw pobrać repozytorium Subversion (lub zaktualizować istniejące) i przekonwertować za pomocą lokalnego kasy; przykład: hg convert [DirectoryOfLocalCheckout] --source-type svn [DestinationDir]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-19 09:47:35