Samstag, 6. Dezember 2008

Subversion-Repositories nach Git migrieren

Nachdem man sich entschlossen hat, mit Git zu arbeiten, steht man vor einem weiteren Problem: Was macht man jetzt mit den alten Subversion-Repositories? Natürlich kann man weiter Subversion verwenden, es ist schließlich kein schlechtes System. Aber warum sich mit zwei parallel zu pflegenden Systemen herumschlagen?

Auf Simplistic Complexity gibt's eine sehr schöne Kurzanleitung, die im Wesentlichen aus drei Schritten besteht:
  1. Anlegen einer Textdatei für das User-Mapping
  2. Importieren des SVN-Repositories in Git
  3. Exportieren des importierten Repositories auf den Git-Server
Das sieht dann auf der Shell so aus (die Datei usermapping.txt enthält die Zuordnung von SVN-Namen zu git-eMail-Adressen in der Form "svnid = Git User <gituser@email.com>", eine Zuordnung pro Zeile):

mkdir myproject
cd myproject
git svn init http://myserver/svn/myproject/trunk/ --no-metadata
git config svn.authorsfile usermapping.txt
git svn fetch
git clone --bare .git ../myproject.git

Das in myproject ausgecheckte Subversion-Git-Gemenge kann man jetzt bedenkenlos löschen; das blitzblanke myproject.git wird auf den Git-Server expediert und kann von da aus verwendet werden.

Im Blog wird noch der eine oder andere Haken diskutiert, hauptsächlich, weil Git jedes Commit einem User zuordnet, einige Subversion-Repositories aber keinen User haben, dem der erste Commit zugeordnet ist. Nun, das war bei mir glücklicherweise nicht der Fall, und der Transfer meiner Source-Repositories von Subversion zu Git war bisher schmerzlos und schnell.

Letzter Hinweis, bevor jetzt jeder losstürzt und sein Subversion pensioniert: Es gibt auf der Windows-Plattform immer noch keinen Git-Client, vielmehr muß Cygwin mit dem Paket git-core (und möglichst noch git-gui) verwendet werden.

Keine Kommentare: