Nie mam dużego doświadczenia z Mercurialem, głównie jestem facetem od Gita.
Chciałbym wykonać kopię lustrzaną określonego folderu / pliku Mercurial w repozytorium git. To, co faktycznie próbuję zrobić, to wyeksportować historię pliku z repozytorium Mercurial do Git i być w stanie zsynchronizować to z przyszłymi zatwierdzeniami.
Czy masz jakieś sugestie, jak postępować? Uważam, że najlepszym rozwiązaniem powinno być zapoznanie się z historią łatki Mercurial, okresowe eksportowanie każdego zatwierdzenia jako łatki i umieszczanie łatek Mercurial w repozytorium Git.
Odpowiedzi:
W systemie Linux lub cokolwiek z
bash/sh
lub podobnym albopython
spróbuj z szybkim eksportem :źródło
PYTHON=python2 ~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
. Poza tym działało bez zarzutu.sudo easy_install mercurial
najpierw. Byłoby miło mieć w instrukcjiWindows: rozszerzenie TortoiseHG Hg-Git
Hg-Git może służyć do konwersji repozytorium Mercurial do Git. Możesz użyć repozytorium lokalnego lub repozytorium zdalnego, do którego można uzyskać dostęp przez SSH, HTTP lub HTTPS.
Przykład konwersji lokalnych repozytoriów.
Zainstaluj Hg-Git.
W systemie Windows TortoiseHg jest dostarczany z Hg-Git, chociaż musisz go włączyć za pomocą narzędzia ustawień (w sekcji rozszerzeń)
lub ręcznie w
~/mercurial.ini
Użyj następujących poleceń, aby przekonwertować repozytorium:
hg
Zakładka jest konieczne, aby zapobiec problemom jak inaczej hg-git popycha do aktualnie wyrejestrowany oddziału mylące Git. Spowoduje to utworzenie gałęzi nazwanejhg
w repozytorium Git. Aby uzyskać zmiany w module głównym, użyj następujących poleceń (konieczne tylko w pierwszym uruchomieniu, później po prostu użyjgit merge
lubrebase
):źródło
Możesz (od strony Mercuriala):
--filemap
opcją konwertuj część oryginalnego repozytorium na mniejsze z tylko potrzebnymi plikami | katalogamilub (zamiast hg-git), używając mostka Mercurial w Git , clone | pull repository from Git
źródło
Gitify
Wydaje się, że jest to bardziej nowoczesna i łatwiejsza w użyciu alternatywa do wykonania konwersji https://github.com/buchuki/gitifyhg
źródło
Konwertuj repozytorium Mercurial na Git w systemie Windows 10
Jeśli nie ma problemu z kodowaniem - użyj rozszerzenia TortoiseHG Hg-Git
Jeśli coś jest nie tak z kodowaniem - użyj szybkiego eksportu
Zainstaluj Bash
Otwórz PowerShell jako administrator i uruchom:
Zainstaluj Ubuntu 16.04 LTS ze sklepu Microsoft Store
Otwórz Bash i uruchom
zainstaluj mercurial
uzyskać szybki eksport v180317 (w tej chwili wersje po 180317 nie działają poprawnie)
konwertować repozytorium
opcje kodowania:
-f
kodowanie, na przykład-f cp1251
--fe
kodowanie nazwy pliku, takie jak--fe cp1251
źródło
hg-git-fast-import
https://github.com/kilork/hg-git-fast-import
Kolejne narzędzie z następującymi funkcjami:
Możesz pobrać plik binarny dla swojej platformy i umieścić go w ścieżce lub zainstalować z
cargo
(wymaganerust
do zainstalowania ):Wtedy użycie jest takie:
Nie wymaga
Python
iMercurial
do zainstalowania. Zaawansowana konfiguracja pozwala na podmianę autorów lub oddziałów, tworzenie gałęzi z prefiksem i nie tylko.źródło
Jeśli korzystasz z github.com , wygląda na to , że mają one funkcję importowania, która pozwala po prostu wpisać adres URL projektu hg.
Najpierw utwórz nowe repozytorium, a następnie na landing page nowego repozytorium przewiń w dół i kliknij przycisk „Importuj kod” .
Następnie wpisz adres URL swojego poprzedniego repozytorium i kliknij „Rozpocznij import”.
Następnie GitHub zajmie się resztą!
Zauważ, że GitHub poprosi Cię o podanie danych logowania do starego repozytorium, jeśli będzie ich potrzebować.
Ooh! Znalazłem oficjalny przewodnik
źródło
W systemie Windows może być trochę trudne. Po włączeniu odpowiednich wtyczek w mercurial (
hggit
), można również użyć TortoiseHG.Korzystanie z konsoli:
% hg bookmarks hg
% hg push <relative path to>/<git-repo>
źródło
Może to komuś dzisiaj pomaga (przy konwersji repozytorium rtęci na git, przy jednoczesnym zachowaniu historii). Przetestowano pod kątem współpracy z Mercurial 4.0.1.
I wreszcie, aby przekazać nowo przekonwertowane lokalne repozytorium.
źródło