Cómo extraer automáticamente el número de versión?

Estoy escribiendo una aplicación Symfony Console PHP que toma un número de versión en el constructor .

$app = new Application('myapp', '1.0'); 

Ya he descubierto que es fácil olvidarse de encontrar el número de versión al crear una nueva versión de la label git. ¿Cómo puedo hacer esto de forma dinámica / automática?

Aparte de aquí en SO, busqué en packagist bastante profundo porque pensé con certeza que esto era algo común, pero no fue capaz de mostrar nada.

Al principio pensé en escribir una function que hiciera algo como esto:

 chdir(__DIR__); shell_exec('git describe --abbrev=0 --tags'); 

Pero debido a que requiero globalmente esta aplicación CLI con compositor , no tiene el repository git con el código fuente.

Mi siguiente idea es que sé que al less puedo getlo del compositor

 composer global show myname/mypackage 

Pero esto arroja un montón de información y no hay ninguna opción de la que sea consciente para mostrar el número de versión. Tengo ganas de filtrar todo esto con algo como regex podría ser excesivo. ¿Hay alguna forma mejor?

Sacar el número de versión de alguna parte podría ser difícil, porque podría ejecutar una versión anterior de la aplicación pero extraer erróneamente el número de versión más reciente.

Puede agregar un file "release.version" a su repository que solo contenga el número de versión y leerlo para pasarlo al constructor.

Luego puede usar un git hook como pre-commit para actualizar este file antes de enviar una label.

Sin embargo, esto no se recomienda en los sistemas distribuidos porque podría provocar colisiones, pero para equipos más pequeños o equipos con un administrador de versiones dedicado, podría estar bien. Lea aquí: https://wincent.com/blog/automatic-deployment-numbering-in-git y ¿Cómo habilito la cadena de identificación para repositorys Git?

Sería suficiente tener un enlace precompromiso que busque una nueva label y solo te recuerde que debes boost la versión en el código;).