Close

Synchronize Git repositories

Es ist sehr leicht, dein Git-Repository mit neuen Commits im Original-SVN-Repository zu synchronisieren. Das macht die Übergangsphase im Migrationsprozess einfach, in der du weiterhin deinen bestehenden SVN-Workflow verwenden kannst aber langsam damit anfangen kannst, mit Git zu experimentieren.

Es ist möglich, in beide Richtungen zu synchronisieren. Wir empfehlen jedoch eine monodirektionale Synchronisierung von SVN zu Git. Während der Übergangsphase solltest du dich nur auf dein SVN-Repository festlegen, nicht das Git-Repository. Wenn du dir sicher bist, dass dein Team zur Umstellung bereit ist, kannst du den Migrationsprozess abschließen und anfangen, Änderungen mit Git anstatt SVN zu bestätigen.

Git-Migration: wir empfehlen eine monodirektionale Synchronisierung von SVN zu Git.

In der Zwischenzeit solltest du dich auf dein SVN-Repository festlegen und dein Git-Repository bei Bedarf immer synchronisieren. Dieser Prozess ist mit der Convert-Phase -Phase vergleichbar, aber da du es nur mit inkrementellen Änderungen zu tun hast, sollte es effizienter sein.


Die Autoren-Datei aktualisieren


Die Datei authors.txt, die wir zum Zuordnen von SVN-Benutzernamen mit vollständigen Namen und E-Mail-Adressen heranziehen, ist sehr wichtig beim Synchronisierungsprozess. Diese wurde vom Speicherort ~/GitMigration/authors.txt , den wir bisher verwendet haben, verschoben. Du musst den Speicherort aktualisieren mit:

git config svn.authorsfile 

Wenn neue Entwickler seit der letzten Synchronisierung (oder erstem Klonen) ein Commit auf das SVN-Repository durchgeführt haben, muss die Autoren-Datei entsprechend aktualisiert werden. Du kannst das vornehmen, indem du neue Benutzer manuell zu authors.txthinzufügst oder du kannst die Option --authors-prog verwenden, die im nächsten Abschnitt besprochen wird.

Für One-Off-Synchronisierung ist es oft leichter, die Autoren-Datei direkt zu bearbeiten; die Option ---authors-prog ist jedoch bei Durchführung nicht überwachter Synchronisierungen (d. h. bei einer planmäßigen Aufgabe) vorzuziehen.

Datenbanken
Zugehöriges Material

Verschieben eines vollständigen Git-Repositorys

Bitbucket-Logo
Lösung anzeigen

Git kennenlernen mit Bitbucket Cloud

Git-Autoren automatisch generieren


Wenn deine Autoren-Datei nicht aktualisiert werden muss, kannst du zum nächsten Abschnitt übergehen.

Der Befehl git svn enthält die Option --authors-prog, die auf ein Skript zeigt, das SVN-Benutzernamen automatisch zu Git-Autoren transformiert. Du musst dieses Skript konfigurieren, um den SVN-Benutzernamen als dessen einziges Argument zu konfigurieren und eine einzige Zeile in Form von Name (genau wie die rechte Seite der vorhandenen Autoren-Datei) zurückzugeben. Diese Option kann sehr nützlich sein, wenn du von Zeit zu Zeit neue Entwickler zu deinem Projekt hinzufügen müssen.

Wenn du die Option --authors-prog verwenden willst, erstelle eine Datei mit der Bezeichnung authors.sh option in ~/GitMigration. Füge folgende Zeile zu authors.sh hinzu, um einen Dummy-Namen und eine E-Mail für alle Autoren zu erhalten, die in authors.txtnicht zu finden sind:

echo "$1 <$1@example.com>"

Nochmal, das generiert nur einen Dummy-Namen und eine Dummy-E-Mail basierend auf dem SVN-Benutzernamen. Du kannst diese also gerne ändern, wenn du eine aussagekräftigere Zuweisung bieten kannst.

Die neuen SVN Commits abrufen


Im Gegensatz zu SVN unterscheidet Git zwischen dem Download von Upstream Commits und deren Integration in das Projekt. Das erste wird „Fetching“ (oder „Abrufen“) genannt, das letztere kann über Merging oder Rebasing erfolgen. Im Verzeichnis ~/GitMigration musst du den folgenden Befehl ausführen, um neue Commits vom Original-SVN-Repository abzurufen.

git svn fetch

Das ist mit dem Befehl git svn clone von der früheren Phase insofern vergleichbar, als dass dieser nur die Remote-Branches des Git-Repository aktualisiert – die lokalen Branches zeigen noch keine Aktualisierungen. Deine Remote-Branches sollten andererseits exakt des Verlaufs deines SVN-Repository entsprechen.

Wenn du die Option --authors-prog verwendest, musst du den obigen Befehl mit einschließen, und zwar so:

git svn fetch --authors-prog=authors.sh

Mit den abgerufenen Commits synchronisieren

Um die heruntergeladenen Commits im Repository anzuwenden, musst du den folgenden Befehl ausführen:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Das führt zu einem Rebase der abgerufenen Commits auf deinen lokalen Branches, damit diese ihren remoten Gegenstücken entsprechen. Du solltest jetzt die neuen Commits jetzt in git log sehen können.

Git Repository (erneut) bereinigen

Es lohnt sich immer, das Skript git-clean nochmals auszuführen, um alle veralteten Tags oder Branches zu entfernen, die vom Original-SVN-Repository seit der letzten Synchronsierung gelöscht wurden:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

Dein lokales Git-Repository sollte jetzt mit deinem SVN-Repository synchronisiert sein.

Zusammenfassung


In dieser Übergangsphase ist es sehr wichtig, dass deine Entwickler nur auf das Original-SVN-Repository Commits ausführen. Das Git-Repository sollte nur über den oben besprochenen Synchronisierungsprozess aktualisiert werden. Das ist viel einfacher, als einen bidirektionalen Synchronisierungs-Workflow zu managen, ermöglicht aber dennoch, dass du mit der Integrierung von Git in deinen Build-Prozess beginnen kannst.


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