Close

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.

Datenbanken
Zugehöriges Material

Verschieben eines vollständigen Git-Repositorys

Bitbucket-Logo
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.

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

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

Mitarbeiter arbeiten mit unzähligen Tools zusammen

Bitbucket-Blog

Abbildung: DevOps

DevOps-Lernpfad

Demo Den: Feature-Demos mit Atlassian-Experten

So funktioniert Bitbucket Cloud mit Atlassian Open DevOps

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up