SVN2Git

17. August 2013 / git / svn / Ubuntu

×Info: This post is older than 2 years! Displayed information may be outdated!

Alte SVN-Repos können einfach in Git-Repos konvertiert werden (mit History).

Git-SVN installieren

sudo apt-get install git-core git-svn ruby rubygems
sudo gem install svn2git

SVN-User mappen

svn co <repo>
# Rausfinden, welche user im SVN committet haben:
svn log | grep '^r[0-9]' | awk '{print $3}' | sort | uniq

# authors-File anlegen (eine Ebene höher)
cd ..
# Beispielinhalt authors-File (es müssen alle User gemappt werden)
someuser1 = Some User <some.user@domain.de>
otheruser = Other User <other.user@domain.de>

Konvertieren

# in einen leeren Ordner wechseln
mkdir svn2git && cd svn2git

# wenn Repo nicht in Standardlayout (= no trunk/ tags/ branches/ -Ordner)
svn2git https://svn.servername.de/svn/project/ --rootistrunk --username yourusername --authors ../authors --verbose --no-minimize-url --notags --nobranches

Falls es nach dem Start des Befehls so scheint, als wäre die Shell abgestürtz: hier wartet das Programm schlicht auf das Passwort! Es gibt in machen (alten?) Versionen keinen Promt! Einfach Passwort eingeben und mit ENTER bestätigen.

Nach der Konvertierung

# cd in neuen git-Repo-Order, dann remote adden (falls vorhanden)
git remote add origin <url.git>

# Remotes anzeigen
git remote -v

# Dann zum ersten Mal "master" nach "origin master" pushen
git push -u origin master 

Verzeichnisse bei der Konvertierung ausschließen

# Ordner excluden
--exclude /dirname

# Kann man auch mehrmals verwenden
--exclude dirname --exclude otherdir