2010-06-22 10 views
6

Ich versuche git-svn und ich bekomme den folgenden Fehler. Was ich bisher getan istgit-svn dcommit Fehler: nicht in der Lage, Upstream-SVN-Informationen zu ermitteln

git svn init -T <my svn repo> 

dann habe ich mit

git commit -a 

dann zu meinem Repository wurde zu begehen, wenn ich ein paar von denen habe ich ein

tat
git svn fetch 

und dann versuchte ich eine

git svn dcommit 

Ho wever, die mit

Unable to determine the upstream SVN information from HEAD history. Perhaps the repository is empty

versagt Ich kann auch sehen, dass die Dateien in meinem Dateisystem und werden von svn nicht markiert verwendet wurde (nicht sicher, ob dies geschehen soll oder nicht) though. Wenn ich das Svn-Repository (mit Repo-Browser) durchsuche, kann ich sehen, dass die Originaldateien dort sind.

Nach diesem ursprünglichen Fehler versuchte ich Rebasing ohne viel Erfolg (es wirft einen anderen Fehler).

+0

Ich nehme an, das hängt damit zusammen, dass das SVN-Repository zu Beginn leer ist. Nicht sicher, ob dies eine Einschränkung von git-svn ist. – usr1234567

Antwort

1

Die Befehle git svn ähneln denen einer normalen Fernbedienung (die Fernbedienung svn heißt git-svn). fetch lädt nur Commits von der Remote herunter, es verbindet sie in keiner Weise mit Ihrem Baum. Es wird funktionieren, wenn Sie direkt nach dem Initing holen, da Sie noch keinen Baum haben, aber Sie zuerst begangen haben. Sie möchten git svn rebase verwenden, die Ihren Baum auf den Svn-Kopf rebasen wird. Normalerweise Sie git svn fetch direkt nach git svn init, oder einfach git svn clone, die beide verwenden. Sobald die erste Repository eingerichtet ist, können Sie einfach git svn rebase die ganze Zeit, die in einem Arbeitsgang und Rebases holt

+2

Hallo Michael. Danke für die Erklärung . Ich wusste nicht, dass ich eine Rebase machen musste, bevor ich mich an den Git Repo gebunden habe. Ich versuchte Giot svn Rebase (wie ich in meinem Beitrag sagte), aber es wirft Unable zu stromaufwärts SVN Informationen aus arbeiten Baumwörterbuch – roundcrisis

+0

@Miau Ich bin mir nicht sicher, wie Sie Ihre bestehenden Repository zu beheben; du musst vielleicht einen neuen erstellen und die svn remote richtig einrichten * bevor * du etwas commitest –

+0

Eine Sache, die du tun könntest, versuch deine Commits als Patches zu speichern und dann ein 'git reset --hard' zu machen. Dann tun 'git svn fetch' und' git svn rebase', um Upstream-Updates zu erhalten. Dann wenden Sie Ihre Patches an und verpflichten Sie sich. Das ** kann ** funktionieren. – yasouser

0

Nur eine Vermutung, versuchen git svn Klon, dann ändern/Dateien begehen, dann git svn dcommit. So mache ich es normalerweise und es funktioniert (in meinem Fall).

+0

Funktioniert das auch mit einem SVN-Repository, das noch kein Commit hat? – usr1234567

3

Ich fand, dass, wenn der SVN Repo war leer git-svn

wirft

Unable to determine upstream SVN information from HEAD history

So verwenden SVN checkte ich in einer Textdatei als

svn add test.txt; svn commit -m "test file" 

erste begehen Dann konnte ich ein git svn Klon und die behoben, alles zu tun.

1

Diese Seite behebt das Problem für mich: http://eikke.com/importing-a-git-tree-into-a-subversion-repository/. Wörtliches Zitat:

The issue is that the SVN metadata has been lost. To fix this, we can use a Git graft to link them. We’ll tell Git the commit which created the SVN folder in which we want to store the project is the parent commit of the first commit in our Git repository:

$ git show-ref trunk 
> 741ab63aea786882eafd38dc74369e651f554c9c refs/remotes/trunk 
$ $ git log --pretty=oneline master | tail -n1 
> 88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 Initial version 
$ echo "88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 741ab63aea786882eafd38dc74369e651f554c9c" >> .git/info/grafts` 
1

Is it a general git-svn limitation? Or exists the problem between keyboard and chair?

Diese Fehlermeldung wurde in git 1.5.1 (Feb. 2007) eingeführt durch commit a8ae262

Since you're committing from HEAD (or another commit that is a parent of HEAD), you'll be able to find a commit with metadata information containing the SVN URL that your HEAD was descended from anyways.

So git Bedürfnisse zu finden, ein Commit einschließlich des SVN URL, damit eine Ihrer Filialen ordnungsgemäß funktioniert.

Or exists the problem between keyboard and chair?

, dass, wenn Sie einen Ihrer Niederlassung passieren kann vorgit svn clone erstellt wählen. Sie müssen mit Zweigen arbeiten, die über den aus SVN importierten erstellt wurden, unter git svn clone.

+0

Mit anderen Worten: Git-svn kann nicht mit leeren Subversion-Repositories umgehen. – usr1234567

+0

@ usr1234567 tatsächlich scheint das der Fall zu sein. – VonC