Jak przekonwertować repozytorium Git na Mercurial?


104

Pracowałem nad aplikacją java używając git jako repozytorium kodu źródłowego. Chciałbym podzielić się projektem z innymi programistami java i wydaje się, że hg jest przez nich najczęściej używany.

Moje pytanie brzmi: jak przekonwertować repozytorium git na hg?

Gdybym spróbował googlować „konwertuj git na hg”, a każde trafienie w wyszukiwarce dotyczy konwersji z hg do git. Używam również TortoiseHg .


16
Jeśli zamiast tego chcesz przekonwertować z mercurial na git: stackoverflow.com/questions/883452/ ...
Christian Oudard

Ten ostatni akapit nie ma sensu. Literówka?
tshepang

1
@Tshepang: Chciałem „git -> hg”, ale otrzymałem „hg -> git”. Zmienię to pytanie, ale myślę, że ludzie i tak je zrozumieli, ponieważ są teraz odpowiedzi.
Spoike

Odpowiedzi:


79

hg convertNarzędzie nie jest domyślnie włączona po instalacji. Aby ustawić go jako taki, dodaj do swojego .hgrcpliku następujące elementy.

[extensions]
hgext.convert=

Jeśli używasz TortoiseHg w Windows, ten plik znajduje się w twoim katalogu domowym jako mercurial.ini. Po zmianie tego ustawienia będziesz mógł korzystać z hg convertnarzędzia.


5
W Ubuntu ogólnosystemową zmianę można wprowadzić w / etc / mercurial / hgrc
Sentient

1
W systemie Windows, używając TortoiseHg, można go włączyć za pomocą elementu menu Ustawienia globalne z menu rozszerzenia powłoki TortoiseHg w sekcji Rozszerzenia w obszarze Ustawienia globalne.
Umar Farooq Khawaja

Opis jest nieco niekompletny, ponieważ nie określa, że ​​hg będzie potrzebował dostępu do gita w celu konwersji, w przeciwnym razie pojawia się błąd „nie można znaleźć wymaganego narzędzia git”.
jmd

41

Korzystając z rozszerzenia Mercurial Convert

Dodaj następujące wiersze do swojego .hgrclub, aby włączyć rozszerzenie:

[extensions]
hgext.convert=

I wpisując

cd src
hg convert --datesort . dst

(nawet jeśli może to prowadzić do pewnych problemów ...)

Uwaga :: metrix informuje, że to może nie działać:

     hg convert --datesort src dst

Uwaga: zdarza się, że wystąpił błąd, hg convertjeśli wykonasz to polecenie z katalogu innego niż katalog źródłowy.
Otrzymasz następujący błąd:

abort: cannot read tags from git-repo4/.git

Potwierdzone przez git 1.7.9 i Mercurial 2.6.2 w systemie Windows XP


Gdyby ta odpowiedź obejmowała .hgrckonfigurację zamiast linkować do niej, byłaby wyczerpująca.
fbmd

17

Możesz zajrzeć na http://hg-git.github.com/ narzędzie: wtyczkę Git dla Mercurial

Ta wtyczka została pierwotnie opracowana przez gości z GitHub i umożliwia bezstratną konwersję z git <-> Mercurial. Teoretycznie możesz nawet sklonować repozytorium hg.


2
To lepsze rozwiązanie niż konwersja repozytorium. Byłaby to również lepsza odpowiedź, gdyby zawierała więcej szczegółów. Odpowiedzi w jednym wierszu są prawie bezużyteczne.
naught101

1
@ naught101, dzięki za sugestię, dodałem tutaj więcej informacji do bezpośredniego przeczytania.
vdboor

po zainstalowaniu i skonfigurowaniu hg-git użyj hg gexport i hg gimport do konwersji między nimi.
Facet z CAD


6

Rozszerzenie konwersji może działać dla Ciebie, ale jeśli nie, możesz wypróbować tailor, który jest narzędziem ogólnego przeznaczenia do konwersji między różnymi rozproszonymi SCM.



2

Nowy gracz w mieście: git-remote-hg . Zapewnia natywną obsługę mostkowania w git.

Właśnie:

hg init ../hgrepo
git push hg::$PWD/../hgrepo

1

W Gitfolderze ze wszystkimi moimi repozytoriami Git utworzyłem Git2Hg.cmdplik o następującej zawartości:

set PATH=%PATH%;C:\Program Files\TortoiseHg
set PATH=%PATH%;C:\Program Files\Git\bin
hg convert %1

Teraz mogę przekonwertować repozytorium Git na Hg, wpisując to w CMD:

Git2Hg "Folder Name"

0

Wtyczka Hg-Git lub jeśli używasz do systemu Windows lub migracji z jednego do drugiego, odwiedź tutaj 2 [Windows GIT]

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.