Ich habe ein Git-Repository, das ein SVN-Repository verfolgt. Ich habe es mit geklont --stdlayout
.
Ich habe eine neue lokale Niederlassung über erstellt git checkout -b foobar
Jetzt möchte ich, dass dieser Zweig …/branches/foobar
im SVN-Repository landet.
Wie gehe ich vor?
(Schnipsel viel Untersuchungstext. Siehe Fragenverlauf, wenn Sie sich interessieren)
Antworten:
Ich weiß, dass diese Frage vor einiger Zeit beantwortet wurde, aber nachdem ich sie gelesen habe, kann es hilfreich sein, Beispiele für den spezifischen Befehl git svn branch hinzuzufügen und sie mit einem typischen Workflow in Beziehung zu setzen.
Wie kch geantwortet hat, benutze
git svn branch
. Hier ist ein vollständiges Beispiel (beachten Sie das-n
für den Trockenlauf zu testende):Wenn dies gut geht, antwortet der Server mit einer Antwort wie folgt:
Und ohne den
-n
Schalter fügt der Server wahrscheinlich Folgendes hinzu:Das Beste daran ist, dass Sie jetzt einen lokalen Zweig basierend auf Ihrem Remote-Zweig wie folgt erstellen können:
Was bedeutet "Check out und erstellen Sie einen lokalen Zweig mit dem Namen
auth_bug
und lassen Sie ihn dem Remote-Zweig folgen (letzter Parameter)auth_bug
Testen Sie
dcommit
mit--dry-run
(-n
), ob Ihr lokaler Zweig auf diesem Remote-Zweig funktioniert :Der SVN-Server sollte mit dem neuen Filialnamen antworten:
quelle
git co
durch,git checkout
damit das Beispiel für jeden funktionieren kanngit-svn branch
Befehl hat einen schwierigen Teil : Sie müssen online sein, um auf diese Weise einen neuen Zweig zu erstellen. Sie können im Offline folgenden tun: 1.git checkout -b foobar
2. Hack-Hack-Hack 3.git commit -m "Done foobar"
. Und wenn Sie online diese Änderung drücken um 1. tungit svn branch foobar
2.git branch --set-upstream foobar remotes/foobar
3.git svn dcommit
.git checkout -b foobar-new remotes/foobar
. 3.git checkout foobar
4.git rebase foobar-new
5. Um zu testen, ob der Zweig jetzt in den SVN-Zweig übernommen wird.git svn dcommit --dry-run
6. Endlich tatsächlichgit svn dcommit
git branch -D foobar-new
ab git v1.6.1
git svn branch
ist verfügbar.Aus den Git-Dokumenten:
Frühere Versionen von git bieten keine Möglichkeit, einen SVN-Zweig zu erstellen.
quelle
@kch Ich habe gerade (7. Dezember 2008) das v1.6.1-rc1-Tag von git kompiliert und es enthält den Befehl git svn branch und die Dokumentation dafür. Daher sollte die Version 1.6.1 von git (hoffentlich) diesen Befehl enthalten.
quelle