Bumping numbers de versión para nuevas versiones en files asociados (documentation)

Me interesaría saber cómo manejas el número de versión para nuevos lanzamientos.

¿Cómo se maneja el número de versión en files asociados, como páginas man, etc.

El software está construido con la cadena de herramientas gnu, por lo que autoconf, automake, etc. están disponibles y se utilizan para el número de versión de la aplicación. Entonces esa información puede ser reutilizada.

git se usa como un vcs.

Una posibilidad sería introducir un nuevo objective adicional en Makefile.am que haga un sed / awk para replace el número de versión y las dates en todos los files asociados. Ese objective podría llamarse una vez al comienzo (inmediatamente después de la bifurcación) del desarrollo de una nueva versión.

Entonces, el proyecto podría comstackrse con la información correcta cuando las personas hicieran una clonación git del proyecto o cuando se haga una tarball de lanzamiento. Por supuesto, uno debe recordar ejecutar este objective cuando inicie el desarrollo de una nueva versión.

Otra opción sería hacer el reemploop de sed / awk con un gancho para el destino dist. Pero esto colocaría el repository de git del proyecto en un estado donde no hay un número de versión correcto asociado con los files asociados.

Prefiero hacer la primera solución, ya que también registra el número de versión correcto dentro del historial de git.

Al hacer un reemploop sed / awk, ¿prefiere hacerlo "dentro del file" o con una plantilla en file que las herramientas autoconf / automake hacen? Veo ventajas y desventajas en ambos methods.

¿Cómo se manejan las versiones de los files asociados? ¿Los cambias al comienzo de la fase de desarrollo? ¿Los cambias justo antes de enviarlos? ¿Haces un reemploop de file o prefieres usar una plantilla?

GRACIAS.

Creo que la forma estándar de hacer esto es usar el sistema de gancho de Git y m4 o sed / awk para hacer la búsqueda / reemploop como sugieres. Solo necesita un token especial con un comentario en cada file (probablemente en el encabezado).

Aquí está la reference en githooks y aquí hay algunas páginas escritas por personas que resuelven el mismo problema:

Ambos se basan en almacenar el número de versión en un file en algún lugar de su tree fuente.

También encontré un take called 0release que afirma automatizar la creación de versiones (y establecer los numbers de versión).

Finalmente, con respecto a los numbers de publicación, esto se aborda en varias otras preguntas:

  • ¿Qué esquema de numeración de versión recomiendas?
  • ¿Cómo se hace la numeración de versión en un proyecto ágil?
  • ¿Qué esquema de número de versión para la aplicación mal planificada, ramificada y esquizofrénica?
  • Y más http://sofes.miximages.com/search?q=release+numbering

Una solución común hoy en día es invocar AC_INIT con un argumento m4_esyscmd para generar la VERSIÓN de git. Por ejemplo, configure.ac de autoconf contiene las líneas:

 AC_INIT ([GNU Autoconf],
         m4_esyscmd ([build-aux / git-versión-gen .tarball-versión]),
         [bug-autoconf@gnu.org])

donde build-aux / git-version-gen es un script simple que llama a 'git describe' para generar el número de versión. (ver gnulib)

Hay inconvenientes en este enfoque, pero puede ser efectivo.

Usamos el clásico sistema major.minor.patch, que se aplica para lanzar candidatos como una 'label', tenemos un script que label una confirmación como el número de versión, en lugar de usar un 'object de label'. Toda la numeración de la versión se hace 'a mano'. Funciona razonablemente bien, porque el número de versión se crea mediante las secuencias de commands 'liberar en etapas', que es mucho más tarde en el process de desarrollo. No nos molestamos en usar ninguno de los ganchos de git, porque realmente no necesitamos hacerlo, si un compromiso no abandona el entorno de desarrollo, entonces no necesita un ID que no sea el código SHA interno.

Intentamos hacer cumplir que cada versión de 'parche' debe ser compatible binariamente con otras versiones con la misma label mayor y menor.

De esa forma, cualquier cosa con una label debería al less comstackrse, pero es posible o bastante probable que no funcione según las especificaciones.

Un refinamiento sería lograr que el departamento de control de calidad cree un object de label firmado en todo lo que sea 'QA aprobado', pero por ahora confiamos en otros documentos para eso.