2013-05-31 14 views
20

Sto lavorando a un progetto per il quale tutti utilizzano SVN come un server centralizzato e tutti eseguono le modifiche apportate su quel server. Voglio usare Git localmente e sono abbastanza nuovo a git svn. Ho fatto un git svn clone del repository con git svn clone -r HEAD https://svn.repo/app/branch e voglio fare un aggiornamento tramite git.Git-SVN: aggiornamento del repository Git dal server SVN centralizzato

Ho bisogno di un comando 'git pull like' ma di eseguire una revisione specifica del repository del server SVN. C'è anche un comando 'fetch like' per recuperare da una specifica revisione del repository del server SVN?

Non ho nessuna cartella .svn nel mio progetto clonato e git remote non mi dà nulla. Comunque ho fatto un git config -l e ottengo l'URL del server SVN, quindi in qualche modo sono collegato al server SVN. Non so come recuperare o tirare però.

Grazie!

risposta

37

modo migliore per lavorare su un repository Subversion via Git:

  1. git svn init -s https://svn.repo/app/ myrepo assumendo che sotto https://svn.repo/app/ repo contiene gli standard di /trunk, branches e tags sottodirectory
  2. fare un git svn fetch in miorepo fino a quando non più commit sono recuperato (potrebbe richiedere un po 'di tempo e talvolta si interrompe in Windows).
  3. Checkout un ramo Subversion specifico o tronco via git checkout -b trunk remotes/trunk

allora si può semplicemente navigare, hack e impegnarsi nella vostra Git Repo contenente tutte Subversion impegna e rami.

  • di tirare in nuovi impegna da SVN utilizzare git svn rebase
  • Per spingere i commit locali in SVN utilizzano git svn dcommit

Per passare a una specifica revisione Subversion è sufficiente sfogliare la storia tramite git log e cercare un commit che rispecchi il commit di subversion. È possibile individuare facilmente la revisione di Subversion nella riga git-svn-id: del messaggio di commit. Basta usare un git checkout <commithash> per verificare esplicitamente tale versione.

10

Un buon inizio:

a prendere nuove svn commit nel tuo repo locale: git svn rebase

di spingere il vostro locale di impegnarsi a SVN: git svn dcommit

Probabilmente si dovrà usare git stash e git stash pop, prima di utilizzare i due comandi sopra riportati quando la copia di lavoro ha modifiche non modificate.