2009-01-19 17 views
12

Ich habe ein leeres svn auf einem Server eingerichtet und ich habe lokal daran gearbeitet, commits auf dem Weg zu machen. Jetzt möchte ich meinen Repo auf einen SVN-Server übertragen. Dafür habe ich versucht:Wie ein Git Repo zu einem leeren Repo SVN-Server zu verpflichten?

git-svn checkout http://remote.svn.server.com 
git-svn dcommit 

Git dass klagt:

Use of uninitialized value in concatenation (.) or string at /usr/bin/git-svn line 411. 
Committing to ... 
Unable to determine upstream SVN information from HEAD history 

Da ich auf meinem lokalen Computer begann, und die Repo-Online ist leer, ich kann keine Informationen finden, wie man diese Arbeit.

+0

Versuchen Sie, sich an den SVN-Server zu binden * und die Commit-Logs zu erhalten * oder einfach die Daten in einem großen "Initial Commit?" –

+0

Haben Sie den SVN Repo schon geklont? – tcurdt

+0

@Steve Losh. Es war meine Absicht, die Logs zu bewahren, aber zu diesem Zeitpunkt ist es auch toll, einen Initial Commit zu machen. Meine Commits sind jetzt weniger als 20, also würde ich mich sehr freuen, wenn ich das nur zur Arbeit bringen könnte. @tcurdt. Ich habe es jetzt getan, wie Sie unten vorgeschlagen haben. Aber immer noch den gleichen Fehler bekommen –

Antwort

6

Hier ist, was ich tun würde:

git-svn clone http://remote.svn.server.com otherdir 

Dann in andere dir die Änderungen lokal von Ihrem bisherig dir ziehen. Dann sollten Sie ein git Repo haben, das über git-svn "verbunden" ist und Sie sollten dcommit verwenden können.

This könnte auch eine nützliche Lese sein.

+1

Ich bekomme immer noch den gleichen Fehler. Es scheint, dass das Gir Repo selbst nach dem Ziehen nicht verbunden war. –

+0

fügen Sie Ihre .git/config Datei ... ein Git-Log wäre auch nützlich ... das ist wirklich keine Frage für SO ... Sie sollten gehen und fragen Sie auf IRC – tcurdt

28

Ich brauchte so etwas in letzter Zeit und der Prozess ist relativ einfach.

Es gibt ein gutes Tutorial von Brandon Dimcheff, "Commit a linear git history to subversion" (ersetzt old broken link), auf denen diese Schritte basieren.

Ab Git Version 1.6.3 das sind die Schritte:

$ svnadmin create svn_repository 
$ svn mkdir -m "Initial setup" file:///full/path/to/svn_repository/trunk 

$ mkdir gitrepo && cd gitrepo 
$ git init 
$ echo 'Hello from Git' > file.txt 
$ git add file.txt 
$ git commit -m "Hello from Git" 

$ git svn init --trunk=trunk file:///full/path/to/svn_repository/ 
$ git svn fetch 

$ git branch -a # Lists remotes/trunk 

$ git rebase --onto remotes/trunk --root master 
# => Applying: Hello from Git etc. 

$ git svn dcommit 
# => Committing to ... Committed r2 ... etc 

Sie können jetzt eine svn checkout von svn_repository tun und Ihre Git-Repo sehen.

+0

Das half mir viel, danke! – Sietse

+2

Fügen Sie ''log-size-' '' 'git svn fetch' hinzu, sonst dauert es bei großen Repositories ewig. = D – vmassuchetto