¿Las convenciones de nomenclatura de diferentes versiones son adecuadas para diferentes proyectos? ¿Qué usas y por qué?
Personalmente, prefiero un número de compilación en hexadecimal (por ejemplo, 11BCF), este debe incrementarse muy regularmente. Y luego, para los clientes, un número de versión simple de 3 dígitos, es decir, 1.1.3.
1.2.3 (11BCF) <- Build number, should correspond with a revision in source control
^ ^ ^
| | |
| | +--- Minor bugs, spelling mistakes, etc.
| +----- Minor features, major bug fixes, etc.
+------- Major version, UX changes, file format changes, etc.
fuente
$version = New-Object System.Version 1, 2, 3, 4; $version.ToString(); $version.Build;
La versión semántica ( http://semver.org/ ) merece una mención aquí. Es una especificación pública para un esquema de versiones, en forma de
[Major].[Minor].[Patch]
. La motivación de este esquema es comunicar el significado con el número de versión.fuente
No lo uso, pero lo he visto y es una estructura interesante:
Año, mes, día, edificio
Auto explicado.
fuente
Intento usar la política RubyGems Rational Versioning en la que:
fuente
Aquí hay un enfoque muy detallado para la numeración de versiones:
N.x.K
, dondeN
yK
son enteros. Ejemplos:1.x.0
,5.x.1
,10.x.33
. Utilizado para construcciones intermedias .N.M.K
, DondeN
,M
yK
son números enteros. Ejemplos:1.0.0
,5.3.1
,10.22.33
. Utilizado para lanzamientos .N.x.x
, dondeN
es entero. Ejemplo:1.x.x
. Utilizado para ramas de soporte .N.M.x
, dondeN
yM
son enteros. Ejemplo:1.0.x
. Usado para liberar ramas .Aquí está la imagen para una ilustración simple del enfoque de numeración de versiones:
PA
significa pre-alfaA
significa alfaB
significa betaAR
significa liberación alfaBR
significa liberación betaRC
significa candidato de liberaciónST
significa estableLas ventajas de dicho enfoque de numeración de versiones son las siguientes:
N.x.K
) y release (N.M.K
). Lanzamiento significa que el software con el número de versión completo (N.M.K
) ha pasado por algún tipo de proceso de gestión de calidad dentro de la empresa / organización / equipo proveedor.También hay un diagrama más complejo que representa el enfoque de versiones en detalles. También puede encontrar diapositivas de presentación útiles que describen la transición al enfoque de versiones y la aplicación SCMFViz que ilustra los principios básicos del enfoque de numeración de versiones. Las diapositivas de presentación también explican por qué es importante mantener el mismo enfoque de versiones durante toda la vida del proyecto de software.
Personalmente, mi actitud hacia el uso de la versión con fecha en lugar de los números de versión reales supone que los desarrolladores del software con versiones con fecha:
N
inN.M.K
) es responsable tanto de la solución arquitectónica como del principio subyacente de la aplicación. El número de versión principalN
se debe cambiar de acuerdo con los cambios en la arquitectura o los cambios de las ideas y principios principales de su funcionamiento / funcionamiento.Este enfoque puede parecer un poco controvertido, pero creo que esta es la forma más directa de dar números de versión apropiados al software.
fuente
Para cada versión principal que lanzas, no es raro tener una versión funcional que la llames internamente. Por ejemplo, en mi último trabajo, nos referimos a una versión principal con la siguiente convención de nomenclatura inspirada en Ubuntu:
[condición enfermiza] [nombre del animal aliterativo]
Que dio nombres como " Limp Lamprey ", " Wounded Wombat " y " Asthmatic Anteater ".
Asegúrese de que no sea un nombre realmente genial que no se filtre a sus clientes.
fuente
Generation.Version.Revision.Build (9.99.999.9999)
La generación rara vez cambia. Solo un gran giro en el producto: DOS -> Windows, reingeniería completa.
La versión es para grandes cambios incompatibles, nueva funcionalidad, cambios en algunos paradigmas específicos del software, etc.
La revisión a menudo se realiza (características menores y corrección de errores).
Construir es información interna.
fuente
git describe
proporciona una buena extensión a cualquier convención de numeración que haya elegido. Es bastante fácil integrar esto en su proceso de construcción / empaquetado / implementación.Supongamos que nombra sus versiones de lanzamiento etiquetadas ABC (major.minor.maintenance).
git describe
en un commit determinado encontrará el antepasado etiquetado más reciente del commit, luego agregará el número de commits desde entonces y el SHA1 abreviado del commit:Si realmente está en una de las versiones, por supuesto, obtendrá la etiqueta (1.2.3).
Esto tiene el gran beneficio de hacerle saber exactamente de qué fuente construyó, sin tener que numerar cada compilación usted mismo.
fuente
Major.Minor.Public (build) [alpha / beta / trial], como "4.08c (1290)"
fuente
Prefiero números de versión que asignan algún significado semántico. Siempre que pueda usar el número de versión para rastrear los errores reportados con una versión en particular a los cambios que ocurrieron en el código fuente (y en su sistema de gestión de actividades), entonces probablemente esté utilizando el método correcto.
Uso .NET, así que estoy atascado con el sistema de numeración de versiones .NET, pero trato de dar un significado semántico a los números, así que con
major.minor.build.revision
Siempre nos aseguramos de que el número de versión sea visible de alguna manera (con nuestros programas basados en la consola por lotes se imprime en la consola y un archivo de registro, con las aplicaciones web en la barra de menú en la parte superior generalmente)
De esta manera, si los clientes informan problemas, podemos usar el número de versión para rastrear si están usando la última versión y cuántos problemas hemos tenido con versiones particulares.
¡Se trata de trazabilidad!
fuente
Usamos Major.Minor.Build # .YYMMDD [sufijo], ya que generalmente solo hacemos una compilación de producción en un día en particular (pero usamos el sufijo ab / c / d si hay más de uno) y el YYMMDD brinda a los usuarios / clientes / administración una indicación de la antigüedad de la compilación, donde 6.3.1389 no.
Los números importantes aumentan con características significativas del producto (pago).
Los números menores aumentan con correcciones / mejoras (actualización gratuita).
La construcción siempre aumenta; no todas las construcciones se envían, por lo que no es una progresión lineal.
fuente
Los números de versión deben tener suficiente información para evitar conflictos y corregir un error en los problemas de tipo de versión incorrecta, pero no deben transmitir información adicional que no sea relevante.
Por ejemplo, si usa la fecha, los clientes pueden decir que tienen una versión anterior, y los parches contra versiones antiguas pueden tener versiones confusas.
Personalmente, me gustan las versiones semánticas :
Major
.Minor
.Patch
Patch
aumenta cada vez que liberas una compilación.Minor
aumenta cada vez que se agrega funcionalidad compatible con versiones anteriores.Major
aumenta cuando la nueva funcionalidad no es compatible con versiones anteriores.Major
== 0 estás en alfa / pre-lanzamiento.Major
> = 1 son sus lanzamientos públicos.1.5.3
que podría decir de un vistazo que podría actualizar para1.5.4
obtener los parches, eso1.6.0
agregaría funcionalidad y que no debería actualizar2.0.0
(al menos sin manejar el cambio).fuente
X.Y.Z
es nuestro número interno de versión.X.Y
es el número de versión pública, el que tiene un significado para nuestros clientes. Cuando unaX.Y.Z
versión se hace pública, nunca habrá unaX.Y.(Z+1)
versión: la versión pública siempre es la última de la serie.X
se incrementa cuando se lanza una versión principal.Y
se usa para las ramas de mantenimiento de esas versiones principales, solo para la corrección de errores.Z
se usa internamente y no tiene un significado fijo. Hasta ahora, creo una nuevaZ
versión cuando creo que la aplicación tiene un conjunto de características que son interesantes para mostrar a los no desarrolladores, y es relativamente estable. De esta manera, puedo mostrar una demostración de la "última versión válida conocida" de la aplicación cuando alguien pregunta una. En un futuro cercano, planeo usar lasZ
versiones numéricas para nombrar un "objetivo" de características, en nuestro rastreador de errores.Como nota al margen, usamos maven (con el
release
comando) para incrementar el número de versión. Entonces, también hayX.Y.Z-SNAPSHOT
versiones (que indica cualquier versión entreX.Y.(Z-1)
yX.Y.Z
).fuente