Ich brauchte das auch, und mit Hilfe von Bombes Antwort + einigem Herumspielen konnte ich es zum Laufen bringen. Hier ist das Rezept:
Git importieren -> Subversion
1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase origin/trunk
5.1. git status
5.2. git add (conflicted-files)
5.3. git rebase --continue
5.4. (repeat 5.1.)
6. git svn dcommit
Nach # 3 erhalten Sie eine kryptische Nachricht wie folgt:
Verwenden einer höheren URL-Ebene: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo
Ignoriere das einfach.
Wenn Sie # 5 ausführen, können Konflikte auftreten. Beheben Sie diese Probleme, indem Sie Dateien mit dem Status "nicht zusammengeführt" hinzufügen und die Rebase fortsetzen. Schließlich sind Sie fertig; Synchronisieren Sie dann mit dem SVN-Repositorydcommit
. Das ist alles.
Repositorys synchron halten
Sie können jetzt mit den folgenden Befehlen von SVN zu Git synchronisieren:
git svn fetch
git rebase trunk
Verwenden Sie zum Synchronisieren von Git zu SVN Folgendes:
git svn dcommit
Schlussbemerkung
Möglicherweise möchten Sie dies auf einer lokalen Kopie ausprobieren, bevor Sie sich bei einem Live-Repository bewerben. Sie können eine Kopie Ihres Git-Repositorys an einem temporären Ort erstellen. Verwenden Sie einfach cp -r
, da sich alle Daten im Repository selbst befinden. Anschließend können Sie ein dateibasiertes Test-Repository einrichten, indem Sie Folgendes verwenden:
svnadmin create /home/name/tmp/test-repo
Und überprüfen Sie eine Arbeitskopie mit:
svn co file:///home/name/tmp/test-repo svn-working-copy
So können Sie mit den Dingen herumspielen, bevor Sie dauerhafte Änderungen vornehmen.
Nachtrag: Wenn Sie es vermasseln git svn init
Wenn Sie versehentlich git svn init
mit der falschen URL ausgeführt wurden und nicht klug genug waren, um eine Sicherungskopie Ihrer Arbeit zu erstellen (fragen Sie nicht ...), können Sie denselben Befehl nicht einfach erneut ausführen. Sie können die Änderungen jedoch rückgängig machen, indem Sie Folgendes ausgeben:
rm -rf .git/svn
edit .git/config
Und entfernen Sie den Abschnitt [svn-remote "svn"]
Abschnitt.
Sie können dann erneut ausführen git svn init
.