¿Se debe etiquetar una rama de lanzamiento o la rama maestra cuando se usa gitflow?

16

Este problema indica que:

Según tengo entendido, colocar la etiqueta en la rama de lanzamiento antes de fusionar (y no en la rama maestra) es, de hecho, lo correcto, por lo que git describe --tags de la rama de desarrollo también puede encontrarlo. Ver # 374

mientras que otra publicación :

Instalé accidentalmente la versión 0.4.2-pre a través de homebrew hoy y estaba confundido por la forma en que funciona el etiquetado en esa versión. Anteriormente (versión 0.4.1) la etiqueta se creó en la rama maestra, después de que la rama de lanzamiento se haya fusionado con ella. Ahora parece que la etiqueta se creó en la última confirmación de la rama de lanzamiento, lo que no parece ser una buena idea para mí. Especialmente si tiene un sistema de compilación que se basa en etiquetas git y crea una versión de lanzamiento si HEAD es una confirmación etiquetada y una versión de desarrollo si es una de las siguientes confirmaciones. ¿Podría alguien explicarme la lógica detrás de este cambio? Y con respecto a las versiones semánticas, ¡no consideraría que se trata de un aumento de versión en el nivel de parche!

En nuestro equipo tenemos y tuvimos múltiples discusiones sobre esto. Algunos indican que se debe crear una etiqueta desde la rama maestra, mientras que otros prefieren la rama de lanzamiento. De acuerdo con la imagen de gitflow:

ingrese la descripción de la imagen aquí

parece que la etiqueta se coloca en el maestro.

030
fuente
1
Sé que GitLab lucha con las etiquetas en las ramas cuando podas las ramas más viejas, por lo que sería mejor si la etiqueta estuviera en el maestro. No estoy seguro acerca de otras herramientas git.
HorusKol
'The gitflow' implica que este flujo de trabajo (IMO pobre) es el flujo de trabajo git estándar u oficial. No lo es
Miles Rout
@MilesRout ¿Cuál es tu flujo de trabajo git favorito?
030
para mi caso, utilizo valores de etiqueta git para nombrar la versión de la aplicación cuando se lance, así que la hago en la rama de lanzamiento.
Piensa dos veces el código una vez el

Respuestas:

16

En primer lugar, no puede etiquetar ramas, solo puede etiquetar confirmaciones.

Debes etiquetar el commit que realmente liberas. Ese es el punto de las confirmaciones de etiquetado de versiones. Si tiene un problema con su software en algún entorno (de producción o de otro tipo), puede decir con confianza que el problema fue introducido por el compromiso del que se derivó esa versión.

(Esta es la razón por la cual la gente habla de 'compilaciones reproducibles': para que puedan estar seguros de que su proceso de lanzamiento no está introduciendo nuevos errores que no estaban presentes en su entorno de vista previa / puesta en escena, y que si tienen un error en la producción, el mismo binary se está ejecutando en su máquina cuando van a depurarlo).

No tiene sentido etiquetar el segundo commit verde desde la parte inferior (el hijo verde del commit marcó '¡Solo correcciones de errores!') Como 'v1.0' porque no lanzó ese commit a producción. Lanzaste el commit en master. Incluso puede ver que el flujo de git lo ha marcado como 'Etiqueta 1.0'.

Recuerde, las etiquetas tienen un propósito: encontrar confirmaciones fácilmente. Etiqueta una confirmación como 'v1.0' para que pueda encontrar fácilmente lo que lanzó como versión 1.0. No lo etiqueta por el hecho de tener una etiqueta 'v1.0' en algún lugar de su árbol de compromiso vagamente cerca del compromiso que realmente lanzó.

Si tiene problemas para encontrar las etiquetas de su rama de desarrollo, es un problema completamente diferente. Arregle la herramienta que usa para buscar etiquetas. O mejor aún: no use git-flow. Se ve bien en ese diagrama debido a los hermosos puntos de colores y las líneas muy bien diseñadas, pero en realidad parece una red desordenada de líneas y puntos de colores.

Miles Rout
fuente
3
You should tag the commit you actually release. Entonces, si, por ejemplo, 20 confirmaciones que deben liberarse residen en la rama de liberación y esta rama se fusiona en el maestro, la confirmación de fusión que se ha creado debe etiquetarse para saber qué se ha liberado.
030
1
Sí, la confirmación de fusión estaría etiquetada. Como una variante de git-flow, también he visto la creación / etiquetar una "versión bache cometer" separado directamente enbranch:master
rmharrison