Voraussetzungen
Für diese Schritte musst du ein macOS- oder Linux-System verwenden und die folgenden Tools installiert haben:
- Mercurial
- Git
- Git Large File Storage (Git LFS) (siehe Git Large File Storage installieren)
- Python, einschließlich des
pip-Paket-Managers
Importieren eines Mercurial-Repositorys
-
Erstelle ein neues Repository auf Ihre GitHub Enterprise Server-Instance. Initialisiere das neue Repository nicht mit README-, Lizenz- oder gitignore-Dateien, um Fehler zu vermeiden. Du kannst diese Dateien hinzufügen, nachdem dein Projekt per Push an GitHub Enterprise Server übergeben wurde. Weitere Informationen findest du unter Ein neues Repository erstellen.
-
Führe
hg --versionaus, um zu bestätigen, dass Mercurial auf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
Mercurial Distributed SCM (version 6.4) -
Führe
git --version.aus, um zu bestätigen, dass Git auf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
git version 2.40.0. -
Führe
git lfs --versionaus, um zu bestätigen, dass Git LFS auf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1). -
Führe
pip --versionaus, um zu bestätigen, dasspipauf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
pip 21.2.4 -
Führe
pip install mercurialaus, um dasmercurial-Python-Paket zu installieren. -
Lade das neueste Release von fast-export auf deinen Computer herunter, und extrahiere dann das Archiv.
-
Wechsle in das extrahierte Verzeichnis, und führe dann
./hg-fast-export.sh --helpaus.Die Ausgabe sollte mit
usage: hg-fast-export.shbeginnen. -
Klone dein Mercurial-Repository.
Beispiel: Führe
hg clone https://www.mercurial-scm.org/repo/hg mercurial-repo, aus um den Quellcode von Mercurial in das Verzeichnismercurial-repozu klonen. -
Erstelle ein neues Verzeichnis, wechsle in dieses Verzeichnis, und initialisiere dann ein neues Git-Repository.
Beispiel: Wenn du dein neues Repository
mercurial-gitnennen möchtest, führemkdir mercurial-git && cd mercurial-git && git initaus. -
Wechsle in das Verzeichnis für das neu erstellte Git-Repository.
-
Führe
git config core.ignoreCase falseaus, um dein neues Git-Repository so zu konfigurieren, dass Dateinamen auf die gleiche Weise wie bei Mercurial behandelt werden. -
Führe das folgende Skript aus, um eine Liste der Committer in deinem Mercurial-Projekt abzurufen und die Liste in
committers.txtzu speichern:Shell hg log --template "{author}\n" | sort | uniq > committers.txthg log --template "{author}\n" | sort | uniq > committers.txt -
Aktualisiere die Datei
committers.txt, und ordne dabei den im Mercurial-Repository verwendeten Committernamen dem Namen zu, den du in deinem Git-Repository verwenden möchtest. Verwende hierfür das folgende Format:“The Octocat <[email protected]>”=”Octocat <[email protected]>” -
Führe im initialisierten Git-Repository
hg-fast-export.shaus, und übergib dabei den Pfad zu deinem Mercurial-Repository und den Pfad zur Dateicommitters.txtals Argumente.Beispiel:
../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main. -
Führe nach Abschluss des Imports
git checkout HEADaus, um dein neu erstelltes Git-Repository auszuchecken. -
Führe
git remote add origin URLaus, und ersetze dabeiURLdurch die URL für das zuvor erstellte GitHub-Repository (z. B.https://github.com/octocat/example-repository.git), um das GitHub-Repository als Remoterepository hinzuzufügen. -
Führe
git push --mirror originaus, um das Repository per Push an GitHub zu übertragen.Enthält das Repository Dateien, die größer als die maximale Dateigröße in GitHub Enterprise Server sind, führt der Pushvorgang möglicherweise zu einem Fehler. Führe
git lfs importaus, um die großen Dateien in Git LFS zu verschieben, und versuch es dann erneut.