Skip to main content

Importieren eines Mercurial-Repositorys

Du kannst ein Repository aus Mercurial importieren, indem du das Repository in Git konvertierst und dann das Git-Repository an GitHub pushst.

Voraussetzungen

Für diese Schritte musst du ein macOS- oder Linux-System verwenden und die folgenden Tools installiert haben:

Importieren eines Mercurial-Repositorys

  1. Erstellen Sie ein neues Repository auf GitHub. Initialisiere das neue Repository nicht mit README-, Lizenz- oder gitignore-Dateien, um Fehler zu vermeiden. Sie können diese Dateien hinzufügen, nachdem Ihr Projekt per Push an GitHub übergeben wurde. Weitere Informationen findest du unter Ein neues Repository erstellen.

  2. 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)

  3. 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.

  4. 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).

  5. Führe pip --version aus, um zu bestätigen, dass pip auf deinem Computer installiert ist.

    Die Ausgabe sollte in etwa wie folgt aussehen: pip 21.2.4

  6. Führe pip install mercurial aus, um das mercurial-Python-Paket zu installieren.

  7. Lade das neueste Release von fast-export auf deinen Computer herunter, und extrahiere dann das Archiv.

  8. 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.

  9. 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 Verzeichnis mercurial-repo zu klonen.

  10. 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ühre mkdir mercurial-git && cd mercurial-git && git init aus.

  11. Wechsle in das Verzeichnis für das neu erstellte Git-Repository.

  12. 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.

  13. 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
    
  14. 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>”
    
  15. Führe im initialisierten Git-Repository hg-fast-export.sh aus, und übergib dabei den Pfad zu deinem Mercurial-Repository und den Pfad zur Datei committers.txt als Argumente.

    Beispiel: ../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main.

  16. Führe nach Abschluss des Imports git checkout HEAD aus, um dein neu erstelltes Git-Repository auszuchecken.

  17. Führe git remote add origin URL aus, und ersetze dabei URL 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.

  18. 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 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.

Weitere Informationsquellen