gitflow, tags y numbers de versiones

Necesito dos cosas para un proyecto de trabajo: un model claro de ramificación y una forma de seguir con precisión el origen de mis binarys.

Quiero seguir el model de ramificación de gitflow, que parece encajar perfectamente con mi necesidad.

Para el origen de los binarys, uso git describe --dirty en mis makefiles, para generar una cadena que se almacena en mis binarys. De esa forma, ejecutar cualquier ejecutable con la opción –version me dice precisamente de dónde viene.

Todo parecía funcionar bien hasta que intenta utilizar ambos: para los binarys construidos desde el maestro, funciona perfectamente. Tengo un número de versión limpia, que es el nombre de la última label. Sin embargo, cuando compilo desde otra twig, no hay ninguna label en los antepasados, por lo que ninguna cadena útil producida por git describe

Sé que hay una opción –always que da salida al SHA-1 si no se encuentra ninguna label, pero lo que realmente quiero es algo así como "v1.3.2-15-3b7bf9f", en lugar de "3b7bf9f".

¿Cómo puedo hacer que la label en el maestro sea accesible desde todas las otras twigs? Pensé en fusionar master en desarrollo después de cada label en master, pero no estoy seguro de si es seguro …

¿Me estoy perdiendo algo, o gitflow y git describe especie de "incompatible"? ¿Cómo puedo arreglar esto?

git describe no puede hacer esto, porque la confirmación en la que se encuentra no tiene nada que ver con las tags en el master . Excepto por las fusiones de esa twig para dominar.

En primer lugar, deberá encontrar la confirmación que es la base de combinación de la twig y el maestro actuales:

 $ export mergebase=`git merge-base HEAD master` 

Esto saveá en mergebase el compromiso que queremos (usando bash).

Luego, obtendrás la combinación de commit en master (usando git rev-list ) y luego podrás get la label antecessor de la combinación de fusión:

$ export tag=git rev-list --merges --max-count=1 ${mergebase}..master | xargs git describe --tags --abbrev=0

Encontrar el hash de confirmación de HEAD:

 $ export commit=`git rev-parse HEAD` 

Y la última label equivalente en master con la confirmación en la que se encuentra:

 $ echo "${tag}-${commit}"