Git – upstream + feature branches + release branches

Estaba usando el flujo de trabajo de las twigs del tema de rebase http://www.golden-gryphon.com/software/misc/packaging.html

Pero debido a que a los probadores y administradores locales no les gustan las twigs de lanzamiento desechables, necesito pasar a un flujo de trabajo con twigs estables.

El único que es aceptable es fusionar el flujo de trabajo. Ahora el problema es que no sé cómo trabajar con twigs de características dependientes en este flujo de trabajo. Al volver a basar, esto fue simple, con cada parche simplemente reescribí todas las twigs de características que dependían de esta twig y todo volvió a la normalidad. Con el flujo de trabajo de fusión no puedo volver a establecer la base de mis twigs de funciones, pero la fusión parece un poco loca por esto.

¿Hay algún mejor enfoque?

Con varias características a largo ploop, el model podría verse así:

o-----o bugfix / \ o--o--o------o------o develop branch \ \ \ oo----o---o--o long-term feature 1 \ \ \ \ o--oooo--o--o feature 2 

Básicamente, tienes una twig de desarrollo y fusionas las correcciones de errores a tu twig de desarrollo. La twig de características a largo ploop es la base de la twig de desarrollo y la actualizas fusionando nuevos cambios desde esa twig de desarrollo.

De manera similar, tiene una twig de características para la re-composition 2, base en la function 1, y la actualiza al fusionar las nuevas funciones una nueva twig.

Cuando se completa la característica 1, la fusiona para desarrollarla y actualiza la característica 2 de la twig de desarrollo:

  o-----o bugfix / \ o--o--o------o------o---o---o develop branch w/ feature 1 \ \ \ / \ oo----o---o--o \ \ \ \ \ \ o--oooo--o--o--oo feature 2 

La principal diferencia entre una combinación y un flujo de trabajo de rebase es que las fusiones son invisibles en el flujo de trabajo de rebase, pero siguen ocurriendo (puede verlas en el reflog después de la rebase). Incluso hay mucho más de eso usando rebase, ya que para cada nuevo set de cambios de la twig rebasada se realiza una fusión propia, mientras que en el flujo de trabajo de fusión simple solo se realiza una fusión entre los dos encabezados de las twigs.

Un flujo de trabajo de fusión típico se ve así:

  ooo--------------o Release1+bugfixes / \ \ o-----o----o--oo--o---o----ooooo--o develop \ / \ / ooo Feature 1 o---o Feature 2 

Las características a corto ploop se desarrollan en desarrollo, las características a largo ploop obtienen sus propias twigs. Las twigs de características se fusionan de nuevo en desarrollo. Para cada versión se crea una twig desde el desarrollo, y las correcciones de errores se crean en la twig de publicación donde apareció el error. Cuando se realiza una corrección de errores, se fusiona de nuevo en desarrollo.

Se puede encontrar una mejor explicación en http://nvie.com/posts/a-successful-git-branching-model/ .