bzr/svn to git
Bei mir herrschte bis vor kurzem noch ein heilloses Kunterbunt was die Versionierungstools anging.
Deshalb habe ich mich nun einmal ran gesetzt und meine subversion und bzr-Projekte konvertiert.
bzr
bzr zu konvertieren ist eigentlich sehr einfach mit dem fast-import tool
sudo aptitude install bzr-fastimport
Mit diesem Tool (in Kombination mit git-fast-import) genügt es eigentlich nen neuen Ordner für das git-archiv zu erstellen
mkdir project_git && cd project_git && git init
und dann mittels fast-export/fast-import die metadaten importieren:
bzr fast-export –plain ../project | git fast-import
Bei mir kam es teilweise zu Fehlern wegen ungültiger Tag-/Versions-namen (bzr ist dort anscheinend offener) wegen zb. Leerzeichen oder ähnlichem. Aber auch das ist nur ein kleines PRoblem, so kann man einfach mittels sed direkt in der Pipe den Problematischen Namen ersetzen:
bzr fast-export –plain ../project | sed s/some\ odd\ tagname/oddtagname/ | git fast-import
Nach erfolgreichem Abschliessen des Imports noch einmal
git checkout
und wir haben unser Projekt migriert
svn
Für subversion gibt es auch ein geeignetes Tool: git-svn
sudo aptitude install git-svn
Mit diesem lassen sich svn-Projekt direkt integrieren:
mkdir project_svn && cd project_svn
git svn init https://svn.funny.server –no-metadata –username=svnusername
Zudem brauchen wir noch ein sogenanntes Autherfile, da im git ja doch mehr Informationen zu einem Nutzer gespeichert sind:
git config svn.authorsfile ~/Desktop/users.txt
Erstellen können wir dieses zb. mit folgendem Skript:
#!/usr/bin/env bash
authors=$(svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq)
for author in ${authors}; do
echo "${author} = NAME ";
done
welches uns alle beteiligten Autoren ausliest.
Zuletzt kann mittels
git svn fetch
das Projekt ausgecheckt werden. (Es soll auch der umgekehrte Weg (dpush) funktionieren, jedoch habe ich das nicht ausprobiert)









