2011-10-03 15 views
5

nuovo utente git qui. Voglio usare git, ma sono in un ambiente SVN. Da alcuni libri che ho letto e da alcuni semplici esperimenti, ho riscontrato alcune trappole problematiche e spero di ottenere chiarimenti su come iniziare senza che i miei colleghi vogliano uccidermi.git svn e funziona con filiali private?

voglio che il mio flusso di lavoro di essere:

  • un ramo git maestro che rimane al passo con tronco di svn.

  • rami Git locali che faccio la mia caratteristica e il lavoro bug in.

  • Voglio portare spesso le funzionalità rami fino ad oggi con il maestro.

  • Quando sono pronto, desidero unire un ramo di funzione con master e ripristinarlo a svn.

Si tratta di un flusso di lavoro tipico?

Inizialmente stavo usando git merge per unire il mio ramo principale e rami di funzionalità. Ciò ha portato a tutti i tipi di conflitti e problemi. Più tardi leggo per evitare l'uso di git merge alltogether e mi impegno con git rebase. I seguenti comandi git sarebbero quindi corretti?

  • git svn rebase (per abbattere le ultime modifiche al maestro)
  • git checkout -b myAwesomeFeature (per fare un ramo di caratteristica su cui lavorare)
  • ... fare un certo lavoro, fare impegna a mia caratteristica ramo
  • < < < passare del tempo >>>
  • git checkout maestro
  • git svn rebase (per abbattere novità)
  • git checkout myAwesomeFeature
  • git rebase master (per ottenere cose del tronco svn nel mio ramo della funzione)
  • < < < pronto a spingere la mia caratteristica FILIALE >>>
  • maestro git checkout
  • git rebase myAwesomeFeature (a veloci maestri testa di andata per ottenere la mia roba funzione in)
  • git svn dcommit (di pubblicare finalmente)

Qualche consiglio o suggerimento per aiutare un aspirante utente git a vivere in un mondo svn sarebbe molto apprezzato. Grazie

risposta

2

Il tuo flusso di lavoro è circa lo stesso che ho. È abbastanza buono se ti stai solo affidando al tronco svn.Diventa complicato quando ti impegni in più rami svn in cui rebase non solo unisce il contenuto, ma cambia anche il ramo svn puntato, nel qual caso puoi solo git cherry-pick quando hai bisogno di eseguire il commit in un ramo svn che punta a un ramo git in un altro, come discusso qui: Overcome git svn caveats

e 'anche interessante capire che l'incapacità di SVN per gestire la storia non lineare e che git merge non può essere utilizzato con esso: git svn workflow - feature branches and merge

+1

in realtà è possibile usare 'git merge' con 'git svn'. 'dcommit' sposterà felicemente il commit con più genitori in sovversione, anche se subversion lo vedrà solo come commit regolare con tutti i cambiamenti dal ramo. È persino l'unico modo in cui una volta che inizi effettivamente a collaborare con git (ad esempio provando a passare gradualmente). –