2010-09-08 9 views
7

übertragen Diese Frage könnte auf die Tatsache, dass ich nicht verstehe, wie Verzweigung technisch in SVN und Git funktioniert.Branches mit svn2git

Aber wenn ich svn2git verwende, sind einige der Zweige in refs/remotes/und einige nicht. Zum Beispiel ist trunk/refs/remotes/trunk.

Und wenn ich den Master-Zweig in der neuen Git-Repo überprüfen, ist es nicht die Svn Trunk, sondern ein alter Zweig aus dem letzten Jahr (und es sieht aus wie es völlig zufällig ausgewählt ist). Tags werden korrekt verschoben.

Wenn ich mir das SVN Repo in Trac anschaue, sieht es so aus, als ob das Layout korrekt ist (Stamm, Zweige, Tags) und der Stamm dorthin zeigt, wo es hin soll. Es sieht auch so aus, als ob die Zweige, die korrekt angezeigt werden (keine Fernbedienungen), in .git/config sind, der Rest nicht.

Was ist hier los und was soll ich tun, um den SVN Repo richtig zu konvertieren? Sollte ich einfach auch Definitionen für die Remote-Zweige zu .git/config hinzufügen? Dies würde jedoch das Kofferraumproblem nicht lösen.

EDIT: Ich habe gerade etwas realisiert: thre Fernbedienungen sind genau das selbe wie die lokalen Zweige mit dem Unterschied, dass es einen lokalen Zweig "Master" und entfernten Zweig "Fernbedienungen" gibt, alle anderen 19 Zweige scheinen ähnlich. Das Problem scheint zu sein, dass Master nicht auf "remotes/trunk", sondern auf zufällige Commits verweist.

Ist das nur ein Fehler in svn2git?

+0

Können Sie einen kleinen Baum zeichnen, der das Layout von Stamm, Zweigen und Tags relativ zum Stamm des Repos zeigt? Oh, Moment mal. Ich habe gerade bemerkt, dass dies gepostet wurde. Hah, das hast du wahrscheinlich schon herausgefunden. Keine Ahnung, wie ich diese Frage überhaupt gefunden habe. – JofoCodin

Antwort

0

Es muss ein Fehler sein. Nach Angaben der readme in GitHub für git2svn

und dass der Code in Master geprüft endet als was zur Zeit ist in Ihrem SVN trunk anstatt je nachdem, was SVN-Zweig Ihre letzte Commit in war.

Sie versuchen, manuell könnten die Zweige manuell zu sehen, das angibt, ob das konsistentere Ergebnisse erhalten

svn2git http://svn.example.com/path/to/repo --trunk trunk --tags tags --branches branches 

wenn das nicht funktioniert, eine alliase zu Ihrem .gitconfig f hinzufügen könnte ile, die Sie nach dem svn2git laufen konnte, das Master mit Kofferraum wie gewohnt Sie tun, um Ihre svn2git

[alias] 
    fixport = !sh -c 'git checkout remotes/trunk trunk && git checkout master && git reset --hard trunk' 

dann ... ersetzen würde, und wenn es laufen git fixport getan, und es wird eine lokale Kopie von Fernbedienungen/trunk Kasse als trunk und reset master um das gleich zu machen.

+0

Diese Frage gilt nicht mehr für mich, aber ich habe Ihre Antwort akzeptiert, falls jemand anders das gleiche Problem hat. – Makis

Verwandte Themen