Vorbereiten der Migration

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

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.

Git-Migration: Einbinden des Disk-Image

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. Die Größe des zu erstellenden Disk-Image in Gigabytes. Das Disk-Image kann beliebig groß sein, solange es größer als das zu migrierende SVN-Repository ist.
  2. Den Namen des Festplatten-Images. Wir verwenden in diesem Leitfaden den Wert GitMigration.

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.

Git-Migration: Zuordnen der SVN-Benutzernamen zu den Git-Benutzernamen

Mit den folgenden Befehlen wird diese Textdatei automatisch erstellt:

cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn-repo> > authors.txt

Du musst <svn-repo> durch den URI des SVN-Repositorys ersetzen, das du migrieren willst. 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>

Change the portion to the right of the equal sign to the full name and email address of the corresponding user. For example, you might change the above authors to:

j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>

Summary

Now that you have your migration scripts, disk image (OS X only), and author information, you’re ready to import your SVN history into a new Git repository. The next phase explains how this conversion works.

Du möchtest mit Git arbeiten?

Sieh dir dieses interaktive Tutorial an.

Jetzt loslegen