Ich verwende git-svn, um mehrere Zweige im selben svn-Repository zu verfolgen. Normalerweise funktioniert das gut, aber heute habe ich ein paar Resets und Rebasts gemacht, und plötzlich würden meine Zweige nicht mehr an den rechten Remote-Zweig übergeben:
%Vor%Also würde die Verzweigung b an die Verzweigungen / ein Verzeichnis statt an das Verzeichnis branches / b übergeben.
Ich habe versucht, den verfolgten Zweig zu ändern:
%Vor%Und andere Dinge, aber die einzige Lösung, die funktioniert hat, war, den Zweig b zu löschen und neu zu erstellen:
%Vor%Nun ist meine Frage: Wie bestimmt git svn, in welches Verzeichnis man sich einschreiben soll? Und wie ändere ich dieses Verzeichnis?
Danke,
Jonas
Die SVN-Konfiguration, nach der Sie suchen, befindet sich in der .git / config-Datei Ihres geklonten Repositorys. Es kann mit einem Texteditor manipuliert werden. Hier ist ein Beispiel:
%Vor%Es wird angenommen, dass die Zweige standardmäßig name-zu-name entsprechen. Um einen nicht übereinstimmenden Zweignamen zu verfolgen, benennen Sie den lokalen Zweig um oder fügen Sie eine explizite Konfiguration (remote) für den Zweig mit dem ungewöhnlichen Namen hinzu:
%Vor% Wenn Git-Zusammenführungen von Zweigen aus mehreren SVN-Repos durchgeführt werden, wird dcommit
(logisch, aber verwirrend für Erstbenutzer) auf die SVN-URL des ersten übergeordneten Merge-Commits abzielen. Die Git-Dokumentation besagt, dass "git svn dcommit versuchen wird, zusätzlich zum SVN-Commit, das in git log --grep=^git-svn-id: --first-parent -1
"
Wenn Sie einen SVN-Zweig gegen einen anderen ablehnen, bedeutet dies, dass das "neueste" commits (der untergeordnete Zweig) das Ziel des dcommit
ist. Häufig möchte der Benutzer den dominanten SVN Repo (Zweig) anvisieren. Dies erfordert, dass der Benutzer beim Rebasing die Option --no-ff
verwendet, um sicherzustellen, dass die letzten Commit-Punkte auf den dominanten Zweig verweisen (neue kirschmarkierte Commits).
Zu weiteren relevanten StackOverflow-Fragen gehören:
Mein Problem mit svn git war ähnlich. Meine Zweigstruktur war hierarchisch wie folgt:
%Vor%Ich folgte zuerst den Anweisungen und Beispielen im git-svn Handbuch:
und geklont meinen Stamm mit:
%Vor%Ich habe dann ausgecheckt Filialen / Android / dev-shared Zweig machte Änderungen und Committed sie zu meinem lokalen git-Zweig. Ich habe dann versucht "git svn dcommit -n" zu sehen, was es tun würde, ohne tatsächlich zu committen.
Ich habe gesehen, dass es versucht hat, meine Zweig-Commits auf svn an den Trunk zu übergeben.
SO froh, dass ich die Option "-n" verwendet habe und vermieden habe, mich an die falsche Stelle zu begeben.
Nach vielen Recherchen war die beste Ressource, die ich fand:
Die vorgeschlagene Lösung bestand darin, zunächst einen neuen Klon von svn aus zu testen, indem Sie:
verwenden %Vor%und bearbeiten Sie dann manuell die .git \ config-Datei, um weitere Fetch-Einträge für jeden meiner Zweige hinzuzufügen, an denen ich arbeiten wollte:
%Vor%Als ich dann "git svn dcommit -n" erneut versucht habe, hat es sich jetzt auf den richtigen Zweig "Zweigniederlassungen / Android / dev-shared" festgelegt.