Kasse Remote-Zweig mit git svn


188

Ich habe ein svn-Repository mit git svn ausgecheckt. Jetzt muss ich einen der Zweige auschecken und verfolgen. Welches ist der beste Weg, um es zu tun?

Antworten:


355

Standard-Subversion-Layout

Erstellen Sie einen Git-Klon, der Ihren Subversion-Trunk, Tags und Zweige mit enthält

git svn clone http://svn.example.com/project -T trunk -b branch -t tags

Die --stdlayoutOption ist eine nette Verknüpfung, wenn Ihr Subversion-Repository die typische Struktur verwendet:

git svn clone http://svn.example.com/project --stdlayout

Lassen Sie Ihr Git-Repository alles ignorieren, was das Subversion-Repo tut:

git svn show-ignore >> .git / info / exclude

Sie sollten nun in der Lage sein, alle Subversion-Zweige auf der Git-Seite zu sehen:

Git Branch -r

Angenommen, der Name des Zweigs in Subversion lautet waldo. Auf der Git-Seite würdest du rennen

git checkout -b waldo-svn fernbedienungen / waldo

Das Suffix -svn dient dazu, Warnungen des Formulars zu vermeiden

Warnung: Refname 'Waldo' ist nicht eindeutig.

waldo-svnFühren Sie aus, um den Git-Zweig zu aktualisieren

git checkout waldo-svn
git svn rebase

Ausgehend von einer Nur-Trunk-Kasse

Ändern Sie das Git-Repository so .git/config, dass es einen Subversion-Zweig zu einem Nur-Trunk-Klon hinzufügt

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remotes / mybranch

Sie müssen die Gewohnheit des Laufens entwickeln

git svn fetch --fetch-all

um alles zu aktualisieren, was git svndenkt, sind separate Fernbedienungen. Zu diesem Zeitpunkt können Sie Zweige wie oben erstellen und verfolgen. Führen Sie beispielsweise run aus, um einen Git-Zweig zu erstellen, der mybranch entspricht

git checkout -b mybranch-svn fernbedienungen / mybranch

git svn dcommitHalten Sie für die Zweige, von denen Sie beabsichtigen , ihre Historien linear!


Weitere Informationen

Möglicherweise möchten Sie auch eine Antwort auf eine verwandte Frage lesen .


Dies funktioniert bei mir nicht, da ich den Trunk mit dem Git-SVN-Klon ausgecheckt habe. Ich habe keine Zweige zum Auschecken festgelegt. Ich denke, ich muss das zuerst tun.
— Markovuksanovic

Tatsache ist, dass ich git svn clone svn.example.com/project/trunk verwendet habe. Und jetzt weiß ich nicht, wie ich andere Zweige so einstellen soll, dass sie verfolgt werden, ohne mein aktuelles Repo zu verlieren ...
— markovuksanovic

20
Ich würde vorschlagen, ein Präfix für Ihre SVN-Fernbedienungen anzugeben. (Hinzufügen, --prefix=svn/wenn Sie dies tun git-svn initoder git-svn clone) Dadurch entfällt die Notwendigkeit, Ihren lokalen Niederlassungen ein Suffix hinzuzufügen.
— Jason Karns

Wenn Sie mehrere Filialen haben, vergessen Sie nicht, "Git Checkout Master" zu machen, bevor Sie sich um eine andere
— Branche

Wenn die show-ignoreFehler auftreten, versuchen Sie esgit svn show-ignore -i trunk
— Antti Haapala
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.