2013-05-31 19 views
20

Ich arbeite an einem Projekt, für die jeder SVN als einen zentralen Server verwendet und jeder drückt die Änderungen, die sie auf diesem Server tun. Ich möchte Git lokal verwenden und ich bin ziemlich neu zu git svn. Ich habe eine git svn clone des Repository mit git svn clone -r HEAD https://svn.repo/app/branch und ich möchte ein Update über Git tun.Git-SVN: Git Repo von zentralisierten SVN-Server aktualisieren

Ich brauche einen 'git pull like' Befehl, aber um von einer bestimmten Revision des SVN Server Repo zu ziehen. Gibt es auch einen 'Holen wie' Befehl, um von einer bestimmten Revision des SVN Server Repo zu holen?

Ich habe keine .svn Ordner in meinem geklonten Projekt und git remote gibt mir nichts. Allerdings habe ich eine git config -l und ich bekomme die URL des SVN-Servers, also bin ich irgendwie mit dem SVN-Server verbunden. Ich kann nicht holen oder ziehen.

Danke!

Antwort

37

beste Art und Weise auf einem Subversion-Repository über Git zu arbeiten:

  1. git svn init -s https://svn.repo/app/ myrepo davon aus, dass unter https://svn.repo/app/ der Repo bietet die Standard /trunk, branches und tags Unterverzeichnisse
  2. Führen Sie eine git svn fetch in myrepo bis keine weiteren Commits sind geholt (kann einige Zeit dauern und bricht manchmal unter Windows ab).
  3. Kasse eine bestimmte Subversion Zweig oder Stamm über git checkout -b trunk remotes/trunk

Dann Sie einfach durchsuchen, hacken und sich verpflichten, in die Git Repo alle Subversion enthält verpflichtet und Zweige.

  • in Commits von SVN git svn rebase
  • nutzen Sie ziehen Ihren lokalen Commits in SVN müssen Sie nur git svn dcommit

Um zu einer bestimmten Subversion Revision zu springen verwenden drücken Sie die Geschichte über git log durchsuchen und Suchen Sie nach einem Commit, das den entsprechenden Subversion-Commit widerspiegelt. Sie können die Subversion-Revision in der Zeile git-svn-id: der Commit-Nachricht leicht erkennen. Verwenden Sie einfach eine git checkout <commithash>, um diese Version explizit auschecken.

10

Ein guter Start:

zu holen neue SVN in Ihren lokalen Repo begehen: git svn rebase

schieben Sie Ihre lokaler SVN commit: git svn dcommit

Sie werden wahrscheinlich git stash verwenden und git stash pop, bevor Sie die beiden obigen Befehle verwenden, wenn Ihre Arbeitskopie nicht abgeschlossene Änderungen enthält.