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 .

Spoike
źródło
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.

Spoike
źródło
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

VonC
źródło
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.

vdboor
źródło
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
9

Rozproszona kontrola wersji ze stanami Mercuriala :

Narzędzia kontroli wersji obsługiwane przez Convert to:

  • Obalenie
  • CVS
  • Git
  • Darcs

Więc może nie potrzebujesz żadnego dodatkowego narzędzia?

Bombe
źródło
1
Niestety "hg convert" nie jest dostępny w tortoisehg
Spoike
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.

Luke Francl
źródło
2

Po prostu nie można go w ogóle przekonwertować. Po prostu użyj wtyczki Hg-Git ! Nikt nie pozna różnicy.

Jay Atkinson
źródło
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
FelipeC
źródło
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"
stenci
źródło
0

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

dilshad
źródło