2009-01-31 4 views
39

Gründe dafür beiseite zu tun, gibt es einen vernünftigen Weg zu konvertieren Sie ein ganzes Git Repository zu Subversion?Konvertieren eines Repositorys von git zu subversion

ich nur Tonnen auf Informationen zur Migration von Subversion - git, und den Austausch von Differenzmengen zwischen den beiden, aber nicht für Sie eine einfache Umstellung des gesamten Git Repository zu SVN finden.

+1

Duplizieren hier: http://stackoverflow.com/questions/661018/pushing-an-existing-git-repository-to-svn/1056817#1056817 – cmcginty

+15

Traurig, dass Sie mit "Gründe für diese beiseite" Vorwort haben musste um einen Flammenkrieg oder ähnliches zu verhindern ... –

Antwort

14

Das allgemeine Problem mit Konvertierungen dieser Richtung ist, dass Git-Repositories mehr als nur eine lineare Historie von Revisionen enthalten können, wie es Subversion erwarten würde. Es sind mehrere Ancestries mit divergenten Historien und häufigen Merge-Commits möglich, die in einem Subversion-Repository nicht einfach dargestellt werden können.

Für einfache Fälle, in denen Sie einen linearen Verlauf in Ihrem Git-Repository haben, können Sie git-svn dcommit verwenden, um das Los in ein ansonsten leeres Subversion-Repository zu verschieben.

+2

Tut mir leid, das nach ein paar Jahren noch einmal aufzurühren, aber können Sie ein konkretes Beispiel dafür geben? Angenommen, ich habe einen Klon eines Git-Repositorys in ~/my-git-repo, und ich möchte den Commit-Verlauf in ein SVN-Repo kopieren, z. B. svn: //foo.com/empty-svn-repo/ –

+1

@SchighSchagh: Werfen Sie einen Blick auf diese aktuelle Frage, die möglicherweise besser zu dem passt, was Sie brauchen: [möglich, das svn-Repository aus dem (vollständigen) Git-Svn-Klon neu zu erstellen?] (Http://stackoverflow.com/questions/13284762/possible-to -recreate-svn-repository-from-voll-git-svn-klon) –

6

Es ist sehr einfach mit SubGit durchzuführen.

$ svnadmin create svn.repo 
$ subgit configure svn.repo 
$ nano svn.repo/conf/subgit.conf to specify a path to your bare repository (you may use "git clone --bare <URL>" if you have none locally) 
$ subgit install svn.repo 

Nach der Konvertierung Ihrer SVN und Git-Repository verknüpft synchron sein wird: jeder Git Push wird SVN übersetzt begehen und umgekehrt. Zu brechen Übersetzung run

$ subgit uninstall svn.repo 

Während Übersetzung SubGit versuchen zu erhalten Daten, Tags verpflichten, ignoriert, verschmilzt, EOLs, Äste und so weiter, wie es möglich ist. Ich kann nicht dasselbe über git-svn repository sagen.

+0

Dies funktioniert nicht. Eine funktionierende Subgit-Lösung finden Sie unter https://stackoverflow.com/a/11084905/785194. – EML