Todos los ejemplos de versiones semánticas que he visto muestran 3 componentes en uso. No más de 2 caracteres de punto. En $DAYJOB
, utilizamos 4 componentes en nuestros números de versión:
5.0.1.2
¿El control de versiones semántico permite esto?
Y como pregunta secundaria de nivel superior y más discutible, ¿realmente importa? Empecé a pensar que podría ser una buena idea aplicar versiones semánticas, pero en última instancia, entidades como PCI lo anulan.
Debería haber aclarado mi comentario de PCI. El problema es que las auditorías y su costo influyen cuando los componentes mayores y menores cambian, no necesariamente una nueva característica verdadera. Por ejemplo, si se introduce una función relacionada con los pagos, aumentamos el número menor para PCI. Pero si agregamos una nueva característica relacionada con algo en la interfaz gráfica de usuario, no lo hace. Solo cambia el parche. Entonces, en este caso, realmente no tenemos voz en el asunto como desarrolladores, ya que alguien más toma esas decisiones.
fuente
MAJOR(PCI).MINOR(PCI).FEATURE.HOTFIX+BUILD
. Básicamente, solo se nos permite cambiar el tercer y cuarto componente sin involucrar a PCI (y posteriormente a los señores de PCI en la empresa). Para mí, parece que esto es un poco artificial, no estoy seguro de que estén justificados en la forma en que administran el número de versión, pero no sé lo suficiente sobre PCI y el proceso de auditoría para decir lo contrario.Respuestas:
Parece que está pasando por alto las convenciones normales solo para evitar la sobrecarga / auditorías del proceso. Eso ... me parece preocupante.
Lo que está haciendo es efectivamente hacer un número de versión adicional (su dígito PCI menor) de manera algo intencional para mover sus funciones / números de versión menores de vuelta a un lugar, para que ya no activen sus criterios de auditoría interna.
De todos modos, respondiendo a su pregunta sobre el control de versiones semántico, la especificación para el control de versiones semántico establece:
El énfasis es mío.
Entonces la pregunta es, ¿estás usando el cuarto personaje para metadatos de prelanzamiento / compilación? ¿O es básicamente otra indicación de versión que estás lanzando?
En caso afirmativo, las especificaciones de versiones semánticas lo permiten. Si "no", técnicamente no está siguiendo las versiones semánticas.
Si desea seguirlo rígidamente o no, es una decisión que usted y su equipo deben tomar. El propósito de las versiones semánticas es ayudar con la compatibilidad API:
Es un sistema que ayuda a aclarar más cuando el control de versiones afecta a los usuarios intermedios de la API.
Mientras su API sea igualmente clara, no es un gran problema la forma en que elija. Las versiones semánticas resultan ser sencillas, por ejemplo, si estoy usando 3.4.2 y necesito actualizar a 3.4.10 Sé que puedo hacerlo sin romper nada. Si la nueva versión es 3.5.1, sé que es compatible con versiones anteriores. Y sé que la versión 4.0.1 sería un cambio radical.
Todo eso es parte de lo que significan los números de versión.
Ok, esta bien Tiene un sistema que funciona para usted y satisface sus necesidades. Ese es el punto de versionar.
Si su API es privada (solo internamente), realmente no importa cómo realice la versión siempre que tenga sentido para usted y para todos los que la usen. Donde el control de versiones en un formato estándar es cuando tienes muchos otros consumidores de tu API que necesitan saber "¿qué significa esta versión?"
Tener un sistema de control de versiones arbitrario confundirá a las personas que están acostumbradas a otros sistemas, como el control de versiones semántico. Pero si nadie está usando realmente su sistema de versiones, excepto las personas que lo crean, realmente no importa.
fuente
En la versión actual de Semantic Versioning, que es 2.0.0 , no. Hay un requisito que define la versión como la forma XYZ donde X, Y y Z son enteros no negativos que no contienen ceros a la izquierda:
Sin embargo, la capacidad de agregar metadatos está permitida para:
Sin embargo, algo importante a tener en cuenta es que el control de versiones semántico es específicamente para el software que declara una API pública:
Esto tiende a apoyar el desarrollo de bibliotecas o servicios y no a nivel de aplicación.
Lo importante a considerar es lo que significan los números de versión, tanto para uso interno como externo. Las versiones son solo identificadores que le permiten hablar sobre las diferencias en el software en dos momentos diferentes. El control de versiones semántico es un método para poner reglas a este respecto, por lo que si sabe que una aplicación está usando el control de versiones semántico, puede determinar más fácilmente el nivel de esfuerzo requerido para actualizar sus paquetes. Seguir un estándar común puede ser bueno, pero si no puede por alguna razón, documentar las reglas para sus usuarios también debería ser suficiente.
fuente