Esto ha surgido en algunos proyectos para mí. La mejor solución que he tenido hasta ahora es generar un número de versión como este:
x.y. < número de confirmaciones > .r < git-hash >
Normalmente, nuestro sistema de compilación lo genera utilizando una combinación de algún archivo o etiqueta estática para obtener los números de revisión principales, git rev-list HEAD | wc -l
(que fue más rápido que usar git log
) y git rev-parse HEAD
. El razonamiento fue el siguiente:
- Necesitábamos la posibilidad de que el control de versiones de alto nivel ocurriera explícitamente (es decir, x.y)
- Cuando ocurría el desarrollo paralelo, NUNCA necesitábamos generar el mismo número de versión.
- Queríamos rastrear fácilmente de dónde venía una versión.
- Cuando se fusionaron las líneas paralelas, queríamos que la nueva versión se resolviera más alto que cualquiera de las ramas.
El número 2 es invisible para la mayoría de las personas, pero es realmente importante y realmente es difícil con el control de fuente distribuido. SVN ayuda con esto dándole un solo número de revisión. Resulta que un conteo de compromiso es lo más cercano que puedes obtener, mientras que mágicamente también resuelves el # 4. En presencia de sucursales, esto todavía no es único, en cuyo caso agregamos el hash, que también resuelve perfectamente el # 3.
La mayor parte de esto fue para adaptarse a la implementación a través de pip de Python. Esto garantizó que pip install
podría ser un poco extraño durante el desarrollo paralelo (es decir, los paquetes de personas en diferentes sucursales se mezclarían, pero de una manera determinista), pero después de las combinaciones, todo se solucionó. Salvo la presencia de una revisión o modificación expuesta, esto funcionó bastante bien para los requisitos anteriores.
En caso de que se lo pregunte, decidimos poner la r delante del hash debido a algunas rarezas con la forma en que el empaque de Python maneja las letras en los números de versión (es decir, son menos de 0, lo que haría que "1.3.10. a1234 "<" 1.3.10 "<" 1.3.10.1234 ").