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 --version
aus, 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 --version
aus, 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 --version
aus, um zu bestätigen, dasspip
auf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
pip 21.2.4
-
Führe
pip install mercurial
aus, 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 --help
aus.Die Ausgabe sollte mit
usage: hg-fast-export.sh
beginnen. -
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-repo
zu klonen. -
Erstelle ein neues Verzeichnis, wechsle in dieses Verzeichnis, und initialisiere dann ein neues Git-Repository.
Beispiel: Wenn du dein neues Repository
mercurial-git
nennen möchtest, führemkdir mercurial-git && cd mercurial-git && git init
aus. -
Wechsle in das Verzeichnis für das neu erstellte Git-Repository.
-
Führe
git config core.ignoreCase false
aus, 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.txt
zu speichern:Shell hg log --template "{author}\n" | sort | uniq > committers.txt
hg 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 <octocato@gmail.com>”=”Octocat <octocat@github.com>”
-
Führe im initialisierten Git-Repository
hg-fast-export.sh
aus, und übergib dabei den Pfad zu deinem Mercurial-Repository und den Pfad zur Dateicommitters.txt
als 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 HEAD
aus, um dein neu erstelltes Git-Repository auszuchecken. -
Führe
git remote add origin URL
aus, und ersetze dabeiURL
durch 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 origin
aus, 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 import
aus, um die großen Dateien in Git LFS zu verschieben, und versuch es dann erneut.