Git workflow y Gerrit

stoy tratando de implementar un tipo de flujo de trabajo 'git-flow' usando Gerrit, pero parece que no puedo entender la última pieza del rompecabezas.

Hay dos condiciones previas para mi problema:

Gerrit solo realizará la fusión a una rama No permito que los compromisos de fusión se envíen a Gerrit. La fusión debe ser realizada por Gerrit después de que se aprueben los cambios

Lo que quiero resolver es lo siguiente. Considere esta situación git:

Master 0 
        \
         \
Develop   0-----0-----0-----0

Hay una rama maestra con una confirmación y una rama de desarrollo que se bifurca de la maestra con varias confirmaciones adicionales. Después de un tiempo, la rama de desarrollo se fusiona nuevamente con la maestra para crear la próxima versión de producción. Los desarrolladores trabajan con ramas temáticas desde el desarrollo y con rebases estrictos. Sus compromisos siempre se basan en el último desarrollo ascendente antes de presionar. Esto debería generar un historial lineal y solo confirmaciones de avance rápido.

Ahora suponga que alguien crea una rama de revisión de master y se fusiona con master:

Master 0--------0 HF 
        \
         \
Develop   0-----0-----0-----0

Esta confirmación ahora solo se fusionó con la rama maestra, pero los desarrolladores necesitan esta confirmación en su rama de desarrollo para incorporar la corrección de errores en sus cambios. Normalmente, fusionaría la rama maestra para desarrollar la rama de desarrollo, pero teniendo en cuenta mis condiciones previas, esto no es posible ya que crearía una confirmación de fusión local.

Mi pregunta es: ¿cómo incorporo las nuevas confirmaciones de la rama maestra en la rama de desarrollo local para que cualquier cambio nuevo de los desarrolladores contenga la corrección de errores? Idealmente, modificaría mi script para aplicar primero los cambios de corrección de errores a la rama de desarrollo local (fusionar pero sin un commit de fusión) y luego volver a cambiar los commits y push del desarrollador. De esta forma, la corrección de errores se agregará automáticamente a sus nuevos cambios y se considerará como tal, como parte de sus nuevas confirmaciones, no como una confirmación separada.

He estado pensando en posibles soluciones:

Cherry eligiendo el compromiso con la rama de desarrollo. Creo que esto siempre dará como resultado una confirmación duplicada cuando el desarrollo se fusione con master la próxima vez. ¿Hay alguna forma de evitar esto?Rebasar como se describe aquí:http: //davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits. Esto probablemente cause problemas ya que la rama de desarrollo se publica, ¿o no?

Espero que mi pregunta sea clara. Avíseme si necesita más aclaraciones. Sé que estoy siendo bastante rígido con mi flujo de trabajo, pero sería ideal en combinación con Gerrit. Si no se puede hacer, entonces probablemente permitiré los commits de fusión ...

Respuestas a la pregunta(6)

Su respuesta a la pregunta