Git Repository in leeres Subversion Repository sychronisieren

Printer-friendly versionPDF versionPDF version

Da wir für ENAPP den Code in Subversion "vorzeigen" müssen und einige schon mit GIT arbeiten, hier eine Anleitung, wie man das migriert.

Standardmässig ist der git svn Befehl nur dafür da, ein bestehendes Subversion repository auszuchecken und dann lokal mit git zuarbeiten.

----
1. SVN initalisieren
cd /tmp
# Benutzername anpassen
svn co https://dev.enterpriselab.ch/education/enapp.h1001.tagrosse
# Hier auch anpassen
cd enapp.h1001.tagrosse
mkdir tags branches trunk
svn add *
svn ci -m "Created structure"

2. Git initalisieren
# Im bestehenden Git-Repository
git svn -s init https://dev.enterpriselab.ch/education/enapp.h1001.tagrosse
git svn fetch

# Vermutlich gibt es da noch eine bessere Variante, so hat es bei mir funktioniert.
git checkout -b trunk_temp trunk
git merge master
git checkout master
git rebase trunk_temp

3. Commiten
git svn dcommit
----

Nicht optimal ist das alle bisherigen commits zu einem einzigen gemerged werden, das liegt daran, dass ich das merging falsch mache. Ist für uns aber egal und alle neuen commits werden separat synchronisiert. Schritt 3 kann man jetzt einfach wiederholen um neue Commits ins SVN-Repository zu pushen.