Skip to main content

Migrieren Ihrer Repositorys von GitLab zu GitHub

Führen Sie eine Testversion aus, und migrieren Sie dann Ihre Repositorys von GitLab zu GitHub.

Prerequisites

  • Sie müssen alle vorherigen Phasen dieses Handbuchs abgeschlossen haben.
  • Das GitLab-Projekt muss für Exporte aktiviert sein. Siehe Aktivieren der Projektexport- und Sidekiq-Konfiguration für Importe in der GitLab-Dokumentation.
  • Stellen Sie sicher, dass Sie die zu migrierenden Daten und die bekannten Supportbeschränkungen des Importer verstehen. Weitere Informationen finden Sie unter Grundlegendes zu Migrationen von GitLab zu GitHub.
  • Es ist zwar nicht erforderlich, die Arbeit während der Produktionsmigration zu unterbrechen, es wird aber empfohlen. Der Importer unterstützt keine Deltamigrationen, sodass Änderungen, die während der Migration vorgenommen werden, nicht migriert werden. Wenn du dich dafür entscheidest, die Arbeit während der Produktionsmigration nicht zu unterbrechen, musst du diese Änderungen manuell migrieren.

Ausführen einer Testversion

Um Probleme aufzudecken, die für Ihr Unternehmen möglicherweise einzigartig sind, empfehlen wir dringend, eine Testausführung Ihrer Migration durchzuführen. Bei einer Testversion lernen Sie Folgendes:

  • Gibt an, ob die Migration für ein bestimmtes Repository erfolgreich abgeschlossen werden kann.
  • Gibt an, ob Sie das migrierte Repository wieder in einen funktionsfähigen Zustand zurückholen können.
  • Wie lange eine Migration dauern wird.

Testläufe können jederzeit ausgeführt werden, und die Arbeit muss während der Migration nicht angehalten werden. Um die Zeit zu verkürzen, die zum Abschließen deiner Testmigration benötigt wird, kannst du die Batches für die Testläufe so planen, dass sie nacheinander ausgeführt werden. Benutzer*innen dieser Repositorys können die Ergebnisse dann selbst überprüfen.

  1. Erstelle eine Testorganisation für deine Testmigrationsvorgänge.

    Du kannst eine einzelne Organisation für alle Testläufe verwenden, oder du kannst eine Testorganisation für jede vorgesehene Zielorganisation erstellen. Erwäge, am Ende der Organisationsnamen -sandbox einzufügen, um zu verdeutlichen, dass die Organisationen nur für die Migrationsvalidierung und nicht für die Produktion vorgesehen sind. Du kannst die Testorganisationen löschen, wenn du fertig bist.

  2. Führe die Testmigrationsvorgänge aus.

  3. Vergewissern Sie sich, dass Sie die Nachverfolgungsaufgaben in Nachverfolgungsaufgaben ausführen können.

  4. Bitte die Benutzer*innen, die Ergebnisse der Migrationsvorgänge zu überprüfen.

  5. Behebe alle Probleme, die durch die Testmigrationsvorgänge aufgedeckt wurden.

  6. Lösche optional die Testorganisation.

Migrieren eines einzelnen Repositorys

Um ein Repository zu migrieren, verwenden Sie den gh gl2gh migrate-repo Befehl.

Shell
gh gl2gh migrate-repo \
  --gitlab-server-url GITLAB_SERVER_URL \
  --gitlab-group SOURCE_GROUP \
  --gitlab-project SOURCE_PROJECT \
  --github-org DESTINATION \
  --github-repo NEW_REPO_NAME \
  --use-github-storage

Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.

PlatzhalterWert
GITLAB_SERVER_URLDie vollständige URL Ihrer GitLab-Instanz, z https://gitlab.com . B. oder https://gitlab.example.com.
SOURCE_GROUPDer vollständige Pfad der Gruppe oder des Namespaces, die das Projekt enthält. Verwenden Sie für geschachtelte Untergruppen den vollständigen Pfad, z parent-group/subgroup. B. .
SOURCE_PROJECTDas GitLab-Projekt, das migriert werden soll.
ZIELDie Zielorganisation auf GitHub.
NEW_REPO_NAMEDer Name für das Repository auf GitHub.

Wenn Sie dies nicht verwenden GitHub-owned blob storage, lesen Sie Konfigurieren des Blobspeichers.

Zusätzliche Argumente

ArgumentDescription
--target-repo-visibilityLegt die Sichtbarkeit des neuen Repositorys auf public, , privateoder internal. Wird standardmäßig auf private festgelegt.
--target-api-url TARGET-API-URLWenn du zu GHE.com migrierst, füge --target-api-url TARGET-API-URL hinzu, wobei TARGET-API-URL die Basis-API-URL für die Unterdomäne deines Unternehmens ist. Beispiel: https://api.octocorp.ghe.com
--target-uploads-url TARGET-UPLOADS-URLWenn Sie zu GHE.com und verwenden GitHub-owned blob storage, fügen Sie --target-uploads-url TARGET-UPLOADS-URLaußerdem hinzu, wobei TARGET-UPLOADS-URL die API-URL für die Basisuploads-API für die Unterdomäne Ihres Unternehmens ist. Beispiel: https://uploads.octocorp.ghe.com. Standardmäßig wird https://uploads.github.com verwendet.
--no-ssl-verifyDeaktiviert die SSL-Überprüfung, wenn die GL2GH extension Gespräche mit Ihrer GitLab-Instanz geführt werden. Verwenden Sie dies nur, wenn Ihre GitLab-Instanz ein selbstsigniertes Zertifikat verwendet. Alle anderen Schritte überprüfen weiterhin SSL.
--archive-url URLImportiert ein zuvor exportiertes Archiv aus einer URL, anstatt das Projekt erneut aus GitLab zu exportieren.
--archive-path PATHImportiert ein zuvor exportiertes Archiv aus einem lokalen Dateipfad, anstatt das Projekt erneut aus GitLab zu exportieren.
--keep-archiveBehält das Exportarchiv lokal bei, anstatt es nach einem erfolgreichen Upload zu löschen.

Generieren eines Migrationsskripts

Wenn Sie mehrere Repositorys GitHub Enterprise Cloud gleichzeitig migrieren möchten, verwenden Sie die GitHub CLI Zum Generieren eines Migrationsskripts. Das resultierende Skript enthält einen migrate-repo Befehl pro Repository.

Führe den Befehl gh gl2gh generate-script aus, um ein Migrationsskript zu generieren.

Shell
gh gl2gh generate-script \
  --gitlab-server-url GITLAB_SERVER_URL \
  --github-org DESTINATION \
  --output FILENAME \
  --use-github-storage

Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.

PlatzhalterWert
GITLAB_SERVER_URLDie vollständige URL Ihrer GitLab-Instanz, z https://gitlab.com . B. oder https://gitlab.example.com.
ZIELDie Zielorganisation auf GitHub.
FILENAMEEin Dateiname für das resultierende Migrationsskript

Wenn du das Terminal verwendest, legst du als Erweiterung .ps1 fest, da für das generierte Skript PowerShell ausgeführt werden muss. Du kannst PowerShell für Mac oder Linux installieren.

Standardmäßig enthält das Skript jedes Projekt, auf das das Token zugreifen kann. Um das Skript zu beschränken, fügen Sie --gitlab-group GROUP``--gitlab-group GROUP --gitlab-project PROJECT es oder für ein einzelnes Projekt hinzu.

Wenn Sie dies nicht verwenden GitHub-owned blob storage, lesen Sie Konfigurieren des Blobspeichers.

Zusätzliche Argumente

ArgumentDescription
--target-api-url TARGET-API-URLWenn du zu GHE.com migrierst, füge --target-api-url TARGET-API-URL hinzu, wobei TARGET-API-URL die Basis-API-URL für die Unterdomäne deines Unternehmens ist. Beispiel: https://api.octocorp.ghe.com
--target-uploads-url TARGET-UPLOADS-URLWenn Sie zu GHE.com und verwenden GitHub-owned blob storage, fügen Sie --target-uploads-url TARGET-UPLOADS-URLaußerdem hinzu, wobei TARGET-UPLOADS-URL die API-URL für die Basisuploads-API für die Unterdomäne Ihres Unternehmens ist. Beispiel: https://uploads.octocorp.ghe.com. Standardmäßig wird https://uploads.github.com verwendet.

Überprüfen des Migrationsskripts

Nachdem du das Skript generiert hast, überprüfst du die Datei, und bearbeitest ggf. das Skript.

  • Wenn du einige Repositorys nicht migrieren möchtest, kannst du die entsprechenden Zeilen löschen oder auskommentieren.
  • Wenn Repositorys in der Zielorganisation einen anderen Namen erhalten sollen, aktualisiere den Wert für das entsprechende Flag --github-repo.
  • Wenn Sie die Sichtbarkeit eines neuen Repositorys ändern möchten, fügen Sie das entsprechende --target-repo-visibility Flag hinzu oder aktualisieren sie.

Migrieren von Repositorys

Wenn die Testausführung erfolgreich war und Sie die Nachverfolgungsaufgaben ausführen konnten, können Sie mit der tatsächlichen Migration fortfahren.

Warnung

Es wird empfohlen, die Arbeit in den Repositories, die Sie migrieren, zu stoppen. Alle Änderungen, die während oder nach der Migration vorgenommen wurden, müssen manuell migriert werden.

Führen Sie das generierte Skript aus. Ersetze FILENAME in den folgenden Befehlen durch den Dateinamen, den du beim Generieren des Skripts angegeben hast.

  • Wenn du ein Terminal verwendest, gibst du ./ ein.

    Shell
    ./FILENAME
    
  • Wenn du PowerShell verwendest, gibst du .\ ein.

    Shell
    .\FILENAME