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