Versiones en twigs de desarrollo y lanzamiento (git-flow)

En http://nvie.com/posts/a-successful-gitbranching-model/ dice:

Las twigs de liberación se crean desde la twig de desarrollo. Por ejemplo, supongamos que la versión 1.1.5 es la versión de producción actual y tenemos una gran versión próxima. El estado de desarrollo está listo para el "próximo lanzamiento" y hemos decidido que se convertirá en la versión 1.2 (en lugar de 1.1.6 o 2.0). Así que nos ramificamos y le damos a la twig de publicación un nombre que refleja el nuevo número de versión:

$ git checkout -b release-1.2 develop Switched to a new branch "release-1.2" $ ./bump-version.sh 1.2 Files modified successfully, version bumped to 1.2. $ git commit -a -m "Bumped version number to 1.2" [release-1.2 74d9424] Bumped version number to 1.2 1 files changed, 1 insertions(+), 1 deletions(-) 

Ahora tengo varios problemas con eso:

  • La twig de desarrollo todavía está en 1.1.5; ¿Cuándo se actualizará esto? ¿Tiene sentido que la twig de desarrollo esté "detrás" de una twig de publicación en términos de numbers de versión en un determinado momento en el time?
  • Entonces, digo que aumente mis numbers de versión antes de crear la twig de lanzamiento. Si lo hago, tengo el mismo número de versión en la twig de desarrollo y liberación hasta la próxima versión, que creo que tiene más sentido. ¿Cuáles son las razones para golpear los numbers de versión después de crear la twig?

Incluso entonces, realmente quiero que mi twig de desarrollo tenga un número de versión que indique claramente que se trata de una versión de desarrollo (porque nadie que encuentre un file "myproject-1.2.jar" generado en algún lado debería considerar por un segundo ejecutar este file jar en un entorno de producción). Entonces, desde el momento en que creo la twig de publicación, me gustaría que los numbers de versión reflejen "esta es la versión 1.2.0" y "esta es una versión de desarrollo basada en 1.2".

Desafortunadamente, al crear la twig de versión, cambiar el número de versión a "1.2" y algo así como "1.2 + dev" en la twig de desarrollo dará lugar a un conflicto cada vez que intentaré fusionar los cambios desde la twig de publicación a desarrollo . ¿Tiene algún consejo sobre cómo get este tipo de control de versiones utilizando git?

Parece que el siguiente flujo de trabajo es capaz de realizar el control de versiones deseado en git:

  • La versión en la twig de desarrollo es <last-release>+dev .
  • Al lanzar una nueva versión desde la twig de desarrollo:
    • Cambia los numbers de versión en los files a <next-release> y confirma.
    • Cree las releases/v<next-release> la twig releases/v<next-release> desde el desarrollo.
    • En desarrollo, cambie los numbers de versión en los files a <next-release>+dev y commit.
    • Cuando finalice la releases/v<next-release> , combine la twig releases/v<next-release> en master y etiquétela.

De esta manera,

  • es fácil saber en qué versión de lanzamiento se basa el código de desarrollo actual,
  • un file jar creado en la twig basada en desarrollo es fácilmente detectable como versión de desarrollo,
  • mientras que las confirmaciones en la twig de publicación aún se pueden fusionar nuevamente a la twig de desarrollo.