Este es un escenario común en mi compañía, actualmente usando Svn:
Hay dos equipos trabajando en un proyecto. Un equipo de "mantenimiento" trabajando en algunas correcciones de errores en una sucursal y otro equipo de "soporte" trabajando en nuevas funciones en otra sucursal. El equipo de mantenimiento debe mover sus cambios a la producción antes de que el equipo de soporte pueda finalizar sus nuevas funciones, de modo que finalicen las correcciones de errores y vuelvan a fusionar su twig en el tronco. Luego de un par de días, el equipo de soporte finaliza las nuevas funciones y se fusiona con el tronco también, resolviendo cualquier conflicto, si existe.
¿Cuál sería el flujo de trabajo típico (y los commands utilizados) para este escenario usando Git?
Sin saber cuál es la forma más común, lo haría:
master
: git checkout master
git merge maintenance
master
git rebase master
master
git checkout master
git merge support
De esta forma, el master
recibe las soluciones primero, luego el equipo de support
puede verificar si los cambios se hacen de forma clara (es decir, sin conflictos) y, una vez hecho, fusionar su twig de support
también en master
.
Si estás buscando un model de ramificación Git funcional (y popular):
http://nvie.com/posts/a-successful-git-branching-model/
Allí, Vincent Driessen describe cómo lidia con múltiples twigs de desarrollo, hotfixes, twigs de lanzamiento, etc.