Dieser Artikel beschreibt, wie ein SVN-Repository (bzw. darin enthaltene Ordnerstrukturen) in ein Git-Repository umgewandelt werden können.
Dazu muss zunächst mit dem git-svn
-Kommando ein SVN-Zweig „getrackt“ werden. Anschließend wird jede Revision des angegebenen SVN-Zweigs in eine Git-kompatible Struktur überführt. Während des Auscheckens der SVN-Sourcen müssen alle SVN-Autoren-Namen auf Git-Autoren-Namen „gemappt“ werden. Anschließend kann diese konvertierte, mit korrekten Autoren-Namen versehene Struktur als Git-Repository committed werden.
Dieser Artikel beschreibt, wie ein SVN-Repository mittels Git-Kommandozeilenbefehlen in ein Git-Repository umgewandelt werden kann.
Konvertieren eines SVN-Zweigs
Um ein SVN-Repo zu Git zu konvertieren, muss zunächst ein entsprechendes leeres Repository auf dem Git-Server angelegt und dann die SVN-Sourcen in das zugehörige lokale Git-Repository ge“fetch“t werden:
# Erstelle leeren Ordner
mkdir svn-to-git-konvertierung
cd svn-to-git-konvertierung
# Clone Admin-Repository und füge der gitolite.conf-Datei ein neues Repository names "GIT_REPO_NAME
" hinzu.
git clone git@gitserver:gitolite-admin
cd gitolite-admin
nano conf/gitolite.conf
git commit -a -m "Repository hinzugefügt"
cd ..
# Erzeuge ein lokales Git-Repository, basierend auf den per URL identifizierten SVN-Sourcen, mit dem Namen GIT_REPO_NAME
.
mkdir GIT_REPO_NAME
cd GIT_REPO_NAME
git svn init svn://svnserver/pfad/zur/svn/ordner/struktur
# Wandle während der Konvertierung alle SVN-Authorennamen in Git-Authorennamen um.
git config svn.authorsfile ../gitolite-admin/svn-authors.txt
git svn fetch
# Sende das konvertierte SVN-Git-Repository an den Git-Server.
git remote add origin git@gitserver:GIT_REPO_NAME
git push origin master
Autoren-Mapping
Mit folgendem Befehl kann eine Liste aller SVN-Autoren erstellt werden, welche in einen bestimmten SVN-Zweig committed haben:
svn log svn://svnserver/pfad/zur/svn/ordner/struktur --xml | grep -P "^
Eine Datei „svn-authors.txt“ kann wie oben beschrieben die bereits bekannten SVN-Autoren des Zweigs svn://svnserver/pfad/zur/svn/ordner/struktur
auf Git-Autoren mappen. Es ist praktisch Sie auf die Grundebene des „gitolite-admin“-Repositories einzuchecken, um Sie für spätere Vorgänge wiederzuverwenden.
Diese wird für das Konvertieren eines alten Standes im SVN-Zweig benötigt und sollte deshalb vor der Konvertierung ausgecheckt werden.