2009-09-15 3 views
10

Ich habe ein nacktes git-svn-Repository und habe 'git svn fetch' darauf gemacht.Wie upgrade 'git log' nach 'git svn fetch' auf einem leeren Repo?

Beim Ausführen von 'git log' werden die Aktualisierungen nicht angezeigt. Ich bin mir sicher, dass es Updates gibt, da es die Dateien anzeigt, die nach 'git svn fetch' und 'git svn log' geändert wurden.

Bitte beachten Sie, dass ich dies absichtlich zu einem bloßen Repo gemacht habe, damit 'Git Rebase' nicht funktioniert. Was ist der geeignete Befehl, um die abgerufenen Änderungen zu erhalten?

Antwort

8

Versuchen git log git-svn

git gefunden - ich don Ich habe gerade eine leere Repo, aber ich habe gerade git svn fetch ausgeführt, und Standard git log gibt mir das aktuelle (rebased) Protokoll, aber mit dem git-svn arg (das ist der andere Zweig neben Master, die von git branch -a in meinem Fall identifiziert wird) Ich bekomme das Logbuch auf th e geholt Revision

+0

Yup du hast Recht. 'git log' sucht nach dem master ref, weshalb es am 'git symbolic-ref refs/heads/master refs/remotes/git-svn' funktioniert. Vielen Dank. – vjangus

+0

Dies funktioniert auch nicht in git 1.7.5.4 – MDCore

17

Ein git svn fetch fügt einen neuen Remote-Zweig namens remotes/git-svn hinzu (wie mit git branch -a zu sehen ist).

Wenn Sie Änderungen an der Upstream-Svn vornehmen, dann führen Sie git fetch erneut, die Änderungen werden auf diesem Zweig, nicht auf Master gezogen (tatsächlich abgerufen).

Damit git log (und alles andere) auf dem Master-Zweig in Ordnung ist, brauchen Sie nur eine Zusammenführung, wie Sie normalerweise nach einem Fetch tun müssten (das ist was git pull, fetch und dann merge)).

Da git svn pull nicht funktioniert, müssen Sie es manuell zusammenführen. Während auf dem Master-Zweig, läuft:

git merge remotes/git-svn

Dies wird Ihren Master-Zweig mit dem git-svn Zweig zusammenführen, wieder alles in Ordnung zu machen.

So in der Zukunft läuft

git svn fetch 
git merge remotes/git-svn 

und Sie werden mit dem Upstream-Repository wieder auf dem neuesten Stand sein.

Wenn Sie die Referenz des Masterkopfs auf git-svn head setzen, wie von vjangus vorgeschlagen, wird dies auch funktionieren, aber Sie sollten nie Änderungen in einer entfernten Verzweigung vornehmen.

+1

Dies war die Antwort, die die Situation richtig ansprach, die ich hatte. – Ian

+0

Ich hatte ursprünglich die SVN-Repo von 'git Svn fetch -s --prefix = Herkunft /' gezogen, so in meinem Fall gab es eine 'remotes/Herkunft/Stamm' Zweig statt einer' git-svn' eins. Gleiche Lösung. – mcmlxxxvi