Vorbereitung
Zu Beginn der Migration eines Projekts von SVN zu einer Git-basierten Versionskontrolle muss der lokale Rechner des Migration Lead vorbereitet werden. In dieser Phase lädst du ein geeignetes Utility-Skript herunter, hängst ggf. ein schreibungsabhängiges (case-sensitive) Dateisystem ein und ordnest die Autorenangaben von SVN denen in Git zu.
Alle folgenden Schritte sollten auf dem lokalen Computer des Migration Lead ausgeführt werden.
Herunterladen des Migrationsskripts
Die meisten Tools, die zum Importieren von SVN-Repositorys nötig sind, werden bereits in Git mitgeliefert. Ein paar fehlende Funktionalitäten hat Atlassian in eine praktische JAR-Datei gepackt. Die Datei svn-migration-scripts.jar
ist für die Migration äußerst wichtig. Sie kann vom Atlassian Bitbucket-Konto heruntergeladen werden. In diesem Leitfaden gehen wir davon aus, dass du diese Datei in deinem Hauptverzeichnis abgespeichert hast. Unbedingt beachten: Zur SVN-Migration brauchst du ein Dateisystem, das zwischen Groß- und Kleinschreibung unterscheidet, was bei NTFS nicht zutrifft. Wir empfehlen daher, Linux zu verwenden.
Nach dem Herunterladen solltest du die Skripte überprüfen, um sicherzustellen, dass die Java-Laufzeitumgebung, Git, Subversion und das Dienstprogramm git-svn installiert sind. Öffne eine Eingabeaufforderung und führe folgenden Befehl aus:
java -jar ~/svn-migration-scripts.jar verify
Daraufhin wird eine Fehlermeldung angezeigt, wenn du nicht über die für den Migrationsprozess benötigten Programme verfügst. Installiere die fehlende Software, bevor du fortfährst.
Zugehöriges Material
Verschieben eines vollständigen Git-Repositorys
Lösung anzeigen
Git kennenlernen mit Bitbucket Cloud
Wenn eine Warnmeldung erscheint, weil die Version nicht ermittelt werden kann, führe export LANG=C
(*nix) oder SET LANG=C
(Windows) aus und versuche es erneut.
Falls du die Migration auf einem Computer mit OS X ausführst, erscheint außerdem die folgende Warnmeldung:
You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.
Im nächsten Abschnitt werden wir noch näher darauf eingehen.
Einbinden eines schreibungsabhängigen Disk-Image
Die Migration zu Git sollte auf einem schreibungsabhängigen Dateisystem durchgeführt werden, um eine Beschädigung des Repositorys zu vermeiden. Dies kann problematisch werden, wenn du die Migration auf einem Computer mit OS X ausführst, da das Dateisystem OS X schreibungsunabhängig ist.
Wenn du nicht OS X verwendest, musst du auf deiner lokalen Maschine lediglich ein Verzeichnis mit dem Namen ~/GitMigration
erstellen. Dort wird auch die Migration durchgeführt. Danach kannst du mit dem nächsten Abschnitt fortfahren.
Bei OS X musst du ein Festplatten-Image einbinden, wobei zwischen Groß- und Kleinschreibung unterschieden wird. Verwende dazu das Skript create-disk-image
, das in svn-migration-scripts.jar
enthalten ist. Dabei musst du zwei Parameter beachten:
1. The size of the disk image to create in gigabytes. You can use any size you like, as long as it’s bigger than the SVN repository that you’re trying to migrate.
2. The name of the disk image. This guide uses GitMigration
for this value.
Mit folgendem Befehl zum Beispiel wird ein 5 GB großes Festplatten-Image mit dem Namen GitMigration
erstellt:
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration
Das Festplatten-Image wird in dein Hauptverzeichnis eingebunden. Auf deiner lokalen Maschine sollte jetzt also das Verzeichnis ~/GitMigration
erscheinen. Es dient als virtuelles Dateisystem, bei dem zwischen Groß- und Kleinschreibung unterschieden wird, und ist der Speicherort für das konvertierte Git-Repository.
Extrahieren der Autorenangaben
SVN erfasst nur den Benutzernamen des Autors jeder Überarbeitung. Git dokumentiert dagegen den vollen Namen und die E-Mail-Adresse des Autors. Aus diesem Grund musst du eine Textdatei erstellen, in der die SVN-Benutzernamen den entsprechenden Git-Daten zugeordnet werden.
Mit den folgenden Befehlen wird diese Textdatei automatisch erstellt:
cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt
Achte darauf, <svn_repo_uri>
durch die URI des SVN-Repositorys zu ersetzen, das du migrieren möchtest. Wenn sich dein Repository z. B. unter https://svn.example.com
befindet, führst du Folgendes aus:
java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt
Hierdurch wird eine Text-Datei erstellt mit der Bezeichnung authors.txt.
In dieser Datei findet sich der Benutzernamen jedes Autors im SVN-Repository sowie ein generierter Namen und eine E-Mail-Adresse. Das sollte ungefähr folgendermaßen aussehen:
j.doe = j.doe <j.doe@mycompany.com>
m.smith = m.smith <m.smith@mycompany.com>
Ändere den Teil rechts vom Gleichheitszeichen zum vollständigen Namen und der E-Mail-Adresse des entsprechenden Benutzers. Beispielsweise kannst du die oben aufgeführten Autoren ändern zu:
j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>
Zusammenfassung
Da du jetzt über Migrationsskript, Disk Image (nur OS X) und Autoreninformation verfügst, kannst du deinen SVN-Verlauf in ein neues Git-Repository importieren. In der nächsten Phase wird erklärt, wie diese Konversion funktioniert.
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.