2008-11-05 11 views
190

Ich habe ein Git-Repository, das ein SVN-Repository verfolgt. Ich klonte es mit --stdlayout.git-svn: Wie erstelle ich einen neuen SVN-Zweig via Git?

habe ich eine neue lokale Niederlassung über git checkout -b foobar

Jetzt mag ich diesen Zweig in …/branches/foobar im SVN-Repository, um am Ende.

Wie gehe ich darüber?

(snipped viele investigative Text. Frage Geschichte sehen, ob Sie sich interessieren)

+0

Verwandte Frage: [Wie kann ich git-svn einen bestimmten SVN-Zweig als Remote-Repository verwenden?] (Http://stackoverflow.com/questions/192736/how-do-i-make-git-svn-use- a-particular-svn-filial-as-the-remote-repository – sleske

Antwort

63

wie von git v1.6.1, git svn branch zur Verfügung steht.

Aus der Git-Dokumentation:

 
    branch 
     Create a branch in the SVN repository. 

     -m, --message 
      Allows to specify the commit message. 

     -t, --tag 
      Create a tag by using the tags_subdir instead of the branches_subdir 
      specified during git svn init. 

Frühere Versionen von git bieten keine Möglichkeit, einen SVN-Zweig zu erstellen.

4

@kch Ich habe gerade (7. Dezember 2008) das v1.6.1-rc1-Tag von git kompiliert und es enthält den git svn-Verzweigungsbefehl und die Dokumentation dafür. Also sollte die Version 1.6.1 von git (hoffentlich) diesen Befehl enthalten.

+0

ich habe tatsächlich 1.6.1 installiert und der Befehl ist verfügbar. habe meine Antwort entsprechend aktualisiert. – kch

269

Ich weiß, dass diese Frage vor einer Weile beantwortet wurde, aber nachdem ich es gelesen habe, könnte ich helfen, Beispiele des spezifischen git svn Verzweigungsbefehls hinzuzufügen und es mit einem typischen Arbeitsablauf zu verbinden.

Wie kch antwortete, verwenden Sie git svn branch. Hier ist ein vollständiges Beispiel, (man beachte die -n für Trockenlauf testen):

git svn branch -n -m "Branch for authentication bug" auth_bug 

Wenn dies gut geht, Server antwortet mit Antwort wie folgt aus:

Kopieren https://scm-server.com/svn/portal/trunk bei r8914 zu https://scm-server.com/svn/portal/branches/auth_bug. ..

Und ohne die -n Switch fügt der Server wahrscheinlich so etwas wie:

Gefunden möglich Verzweigungspunkt: https://scm-server.com/svn/portal/trunk =>https://scm-server.com/portal/branches/auth_bug, 8914

gefunden Zweig parent: (refs/remotes/auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

Nach Elternteil mit do_switch

erfolgreich gefolgt Mutter r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(refs/remotes/auth_bug)

Der beste Teil davon, jetzt können Sie eine lokale Niederlassung erstellen basierend auf der Fernbedienung Zweig wie folgt:

git checkout -b local/auth_bug auth_bug 

Welche „check out und erstellen lokale Niederlassung namens auth_bug und machen es bedeutet, folgen Sie dem Remote-Zweig (letzter Parameter) auth_bug

Testen Sie, ob Ihre lokale Niederlassung auf diesem entfernten Zweig arbeitet unter Verwendung dcommit mit --dry-run (-n):

git svn dcommit -n 

Und SVN-Server sollte mit dem neuen Zweignamen antworten:

Begehen zu https://scm-server.com/svn/portal/branches/auth_bug ...

+0

"Git Co" funktioniert nicht auf meiner Version. Ich habe stattdessen "git checkout" benutzt. –

+2

Ja, Git Co bedeutet, dass Jesper einen Git Alias ​​eingerichtet hat. –

+3

aktualisiert und ersetzt 'git co' mit' git checkout', so dass das Beispiel für jeden funktionieren kann –