2011-10-03 20 views
5

nuevo usuario de git aquí. Quiero usar git, pero estoy en un entorno SVN. De algunos libros que he leído y algunos experimentos simples, he topado con algunas trampas problemáticas y espero obtener una aclaración sobre cómo comenzar sin que mis colegas quieran matarme.git svn y trabajando con sucursales privadas?

Quiero que mi flujo de trabajo sea:

  • una rama git maestro que se mantiene en el paso con el tronco de SVN.

  • ramas git locales que hago mi función y el trabajo. Bug en

  • Quiero traer con frecuencia las ramas de características hasta la fecha con el maestro.

  • Cuando estoy listo, deseo fusionar una rama de entidad con el maestro y devolverla a svn.

¿Es este un flujo de trabajo típico?

Inicialmente estaba usando git merge para fusionar mi rama principal y ramas de función. Esto condujo a todo tipo de conflictos y problemas. Luego leí para evitar usar git merge alltogether y me quedo con git rebase. ¿Los siguientes comandos de git, entonces, serían correctos?

  • git svn rebase (para tirar hacia abajo últimos cambios principal)
  • git checkout -b myAwesomeFeature (para hacer una rama de la funcionalidad para trabajar en)
  • ... hacer algún trabajo, que se compromete en mi rama de la característica
  • < < < que pasa el tiempo >>>
  • git checkout master
  • git rebase svn (a derribar cosas nuevas)
  • git checkout myAwesomeFeature
  • git rebase master (para conseguir cosas SVN del tronco en mi rama de la característica)
  • < < < listo para empujar MI ramas de características >>>
  • master git checkout
  • git rebase myAwesomeFeature (a maestros de avance rápido cabeza para conseguir mis cosas en función)
  • git svn dcommit (para publicar finalmente)

Cualquier consejo o sugerencia ayudar a un aspirante a usuario de git en un mundo svn sería muy apreciado. Gracias

Respuesta

2

Su flujo de trabajo es casi el mismo que yo. Es lo suficientemente bueno si solo te estás comprometiendo con el tronco svn.Se vuelve complicado cuando te comprometes con múltiples ramas svn donde rebase no solo fusiona el contenido, sino que también cambia la rama svn apuntada, en cuyo caso, solo puedes git cherry-pick cuando necesitas commits en una rama svn que dirige la rama git en otra, como se discute aquí: Overcome git svn caveats

también vale la pena entender que la incapacidad de SVN para manejar la historia no lineal y que git merge no se puede utilizar con él: git svn workflow - feature branches and merge

+1

en realidad, es posible utilizar 'git con merge' 'git svn'. 'dcommit' hará felizmente commit con múltiples padres a subversión, aunque subversion solo lo verá como commit regular con todos los cambios de la rama. Incluso es la única forma en que una vez que empiezas a colaborar en git (por ejemplo, tratando de cambiar gradualmente). –

Cuestiones relacionadas