2008-10-10 4 views
60

Ein Wort der Warnung: Ich bin ein N00B zu git im Allgemeinen. Mein Team verwendet Feature-Zweige in svn, und ich möchte git-svn verwenden, um meine Arbeit an einem bestimmten Feature-Zweig zu verfolgen. Ich habe (ungefähr) Andy Delcambre's post gefolgt, um mein örtliches git Repo zu gründen, aber diese Anweisungen scheinen git geführt zu haben, um den svn Zweig auszuwählen, der zuletzt als das entfernte Ablagefach geändert hatte; Das Problem ist, dass es nicht die Branche ist, die mir wichtig ist. Wie kontrolliere ich welchen Zweig git-svn verwendet? Oder nähere ich mich dem völlig falsch?Wie kann ich git-svn einen bestimmten SVN-Zweig als Remote-Repository verwenden?

UPDATE: habe ich die -T, -b und -t Optionen (in meinem Fall, weil die svn Repo mehrere Projekte, aber ich möchte, dass die git Repo nur das Projekt enthalten arbeite ich an) verwenden.

Antwort

60

Muchas Gracias zu Bart's Blog für dieses handliche reference for svn branches in git. Scheinbar alles, was ich brauchte, war ein Remote-Zweig angeben, wenn die Schaffung git Zweig, zum Beispiel

git checkout -b git-topic-branch-foo foo 

wo foo der Name des Remote-Zweiges ist.

+8

Wenn Sie bereits Ihren git-Zweig erstellt haben, können Sie auch 'git rebase' verwenden, um ihn auf den svn-Zweig umzuset- zen. – rampion

+0

http://www.jukie.net/~bart/blog/svn-branches-in-git gibt Fehler 500 zurück. Wurde der Blog verschoben oder etwas? – Henry

+0

Danke, dies scheint die einzige Möglichkeit zu sein, git dazu zu bringen, einen Zweig im nicht-abgelösten Zustand auszuprobieren. –

1

Ich benutze git-svn, aber ich habe nicht die Funktionen verwendet, die mit SVN-Zweigen interagieren. Nachdem ich das gesagt habe, merke ich, dass das Tutorial, das du verfolgst, nicht die Optionen -T, -b, -t benutzt hat, um svn init zu gittieren. Diese Optionen teilen git-svn mit, was die Upstream-Stamm-/branches/tags-Verzeichnisse heißen, was in Ihrer Situation wichtig sein könnte.

+0

Danke, Greg. Leider ist das der Unterschied zwischen meinem Setup und dem im Blog. –

30

Sie können auch einen Blick darauf werfen: git-svn is a gateway drug - robby on rails.

habe ich so etwas wie diese, wenn ich sicher zu machen brauchte, dass meine lokale Niederlassung auf den richtigen Remote-SVN-Zweig hinwies:

git branch -r 

den Namen des Remote-Zweiges erreiche ich aufspüren will. Dann

git reset --hard remotes/svn-branch-name 

, um meinen lokalen Zweig explizit zu ändern, um auf einen anderen Remote-Zweig zu verweisen.

+2

+1 für die git reset --hard Sache - genau das, was ich wollte :) –

+1

Dies ist ein manueller Prozess zum Erzwingen einer lokalen Niederlassung auf den aktuellen Stand eines Remote-Svn-Filiale zu aktualisieren. Die Frage, wie ich sie gelesen habe, hat mehr mit den Remote-Tracking-Funktionen von git und der Konfiguration von Git zu tun, um automatisch eine bestimmte Verzweigung in SVN remote zu verfolgen. –

9

Ich musste zuerst 'git svn fetch' ausführen, da der Zweig, mit dem ich mich verbinden wollte, nach meinem Git-Client erstellt wurde.

+0

danke, für diesen Tipp, und als eine Notiz, wenn gefunden, können Sie die Fernbedienungen in .git/svn/refs/Fernbedienungen, und wenn es eine neue, nachdem Sie 'git svn fetch' ausführen, sollte es dort angezeigt werden . –

+0

Vorsicht beim Suchen in .git, Zeug kann sich ändern. Insbesondere können Refs manchmal in Packed-Refs verpackt werden, insbesondere wenn sie sich nicht viel ändern und nicht locker erscheinen, selbst wenn sie vorhanden sind. git show-ref macht das besser, und (vielleicht) git branch -r noch besser – ComputerDruid

+1

wenn du gehst 'get checkout -b git-topic-filename remote-branch-name' und bekomme' fatal: git checkout: update paths ist inkompatibel mit dem Umschalten von Zweigen. " Dann führe' git branch -r', und wenn du den Zweig nicht siehst, dann ist 'git svn fetch' erforderlich. ('git svn rebase' wird nicht den neuen Zweig ziehen, aber' git svn fetch' wird) –

Verwandte Themen