2010-07-31 12 views
28

Sé que no hay reglas fijas sobre el control de la versión del software, pero tengo varias preguntas.Cambio de la versión del código "reglas"

1) Cómo actualizar versiones correctamente

Tengo un pequeño software que empecé hace un tiempo y desde que empecé desde cero Empecé con la versión 0.1.

Cuando agregué más funcionalidad, he estado actualizando el número menor. Ahora estoy en v0.5.7 (menor (.5) para nuevas funciones y revisión (.7) para correcciones de fallas y cambios menores), la cosa es que el programa está casi completo para su distribución, pero ahora me estoy perdiendo "Varias versiones menores, ¿cómo manejan ustedes esa situación? ¿Simplemente saltas los números?

Eso me lleva a la segunda pregunta.

2) ¿Qué es una buena versión de partida número

estoy a punto de iniciar un nuevo proyecto. Esta vez no es tan pequeño de un proyecto y será público y libre para modificarlo, no quiero tener los problemas mencionados anteriormente. Entonces, ¿cuál sería un buen punto de partida?

Bono pregunta:

3) ¿Está bien para hacer los números por encima de 10? como v1.25 o v2.2.30?

No he visto software con ese tipo de numeración (probablemente lo muestren solo en la sección de ayuda o en su página web), de nuevo soy consciente de que no hay reglas para eso, pero parece ser que hay un consentimiento general sobre cómo mantener los números de versión.

+1

Las versiones de software no son lo que normalmente se entiende por 'control de versiones' y no veo nada que ver con git aquí. –

+3

"No he visto software con ese tipo de numeración" - La última versión del kernel de Linux es 2.6.34.1 –

+0

Sí, la versión puede ser cualquier cosa que desee, pero debe ser lógica (para virar). –

Respuesta

27

políticas Versión nubering puede ser un poco loco a veces (ver Version numbers and JSR277, o Oracle, con su base de datos Oracle 11g Release 2:. 11.2.0.1.0
Véase también Software Versioning is Ridiculous).

Pero puede comenzar por buscar et Eclipse Version Number policy como un buen comienzo.
Si realmente cree que necesita más de tres dígitos, este V.R.M.F. Maintenance Stream Delivery Vehicle terminology explanation también es interesante, pero más para los softwares posteriores a 1.0, donde el fixpack y las soluciones provisionales están en orden.


1/"enviar ya": 1.0.0

También conocida como la versión "1.oh-oh". Al menos, está por ahí y puede comenzar a recibir comentarios e iterar rápido.

2/0.x if características principales siguen desaparecidas; 1.0.0 si las principales características están allí.

3/Sí, pero yo diría que sólo para grandes proyectos con una vida útil de varios años (una década por lo general)


Tenga en cuenta que "correctamente" (mientras se está describiendo en longitud en Semantic Versioning 2.0.0) también Déjese guiar por factores más pragmáticos:

Véase el announcement for Git 1.9 (Januaury 2014):

Una versión candidata Git v1.9-RC2 ya está disponible para las pruebas en los lugares habituales.

He oído rumores de que varias herramientas de terceros no les gustan los números de versión de dos dígitos (por ejemplo, "Git 2.0") y empezó a vomitar izquierda y derecha cuando los usuarios instalan v1.9-RC1 .
Si bien es tentador reírse de ellos por su suposición descuidada, también soy práctico y no me importa llamar al próximo lanzamiento v1.9.0 para ayudarlos.

Si vamos por ese camino (y me inclino a ir por ese camino en este momento), el esquema de versiones será:

  • La próxima versión candidata habrá v1.9.0-rc3, no v1.9-rc3;
  • La primera versión de mantenimiento para v1.9.0 será v1.9.1 (y la primera será v1.9.N); y
  • La versión de la función después de v1.9.0 será v1.10.0 o v2.0.0, dependiendo de cuán grande sea el salto de función que estamos viendo.
+2

http://semver.org/: versionamiento semántico, es una fuente interesante. – VonC

+2

La versión semántica se trata de versiones API, no programas. –

+1

@PolymorphicPotato Siento que las personas con frecuencia olvidan que si declara algún método o función pública, ha declarado una API para ese código que acaba de escribir. A menudo, estas apis de uso interno no se pueden tratar como apis de primera clase, junto con una aplicación más grande que no tiene una API pública, pero esa aplicación en su conjunto aún puede ser versionada. Personalmente, creo que las versiones semánticas se aplican bien a las aplicaciones. Además, las personas a menudo usan el término API para referirse y solo a API REST. : \ – ThorSummoner

1

Incluso me enfrenté a este problema con la definición del número de versión, mientras que el desarrollo de la CRM, ya que quería implementar la misma estructura en todos los sistemas. Encontré una manera de resolverlo con Valor del sistema + Manual + randoms.

La información de versión de un ensamblado consta de cuatro valores:

Major Version. Versión secundaria. Número de compilación. Revisión

Lo que hace que la versión inicial 1.0.0.0 por defecto. Para que tenga más sentido, lo reemplazo por

TFS Release. TFS Sprint. Número de cambio.incrementa número de compilación

Supongamos que en su TFS un solo lanzamiento consta de 30 carreras y después de que la liberación se convierte en 2, por lo que los valores de la primera versión será:

TFS lanzamiento: 1

Si el sprint actual es 4, el TFS Sprint tendrá

TFS Sprint: 4

Ahora la tercera parte es administrada por el desarrollador, para una versión inicial podemos tener 0 que puede incrementarse +1 para cada ChangeRequest o BugFix.

Cambiar número de: 0 - representar versión inicial número de cambio de: 1 - representar el cambio Cambio Numbe r: 2 - Solución de error representan

Aunque para cada corrección de errores que podría haber una cambio en el código, por lo que representa el cambio de código por defecto. Pero para tener más sentido, puede tener el número impar para representar el cambio e incluso el número para representar la corrección de errores.

La última parte fue el número predeterminado, afortunadamente .Net nos permite poner * para poner un número de compilación predeterminado. Se mantiene en incremento con cada compilación/compilación que proporciona un sello de firma, si alguien más lo reconstruye.

Cómo implementar:

Abiertas las AssemblyInfo.cs en la carpeta Propiedades y Comentario del AssemblyFileVersion, esto hará que el AssemblyVersion AssemblyFileVersion & misma.

// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below: 
[assembly: AssemblyVersion("1.4.2.*")] 
//[assembly: AssemblyFileVersion("1.0.0.0")] 

Así que la versión final saldrá como: 1.4.2.4512 o algo

Los beneficios de este enfoque es que se puede realizar un seguimiento de la tarea para la cual se genera el código. Con sólo mirar el número de versión que puedo decir, "bueno, ¡es la liberación 1 para Sprint 4 y con un poco de cambio de código

+0

No estoy de acuerdo con su ejemplo de TFS. Las iteraciones de Scrum pueden agregar problemas de compatibilidad entre un sprint y otro para incluir una característica o cambio no planeado al comienzo del proyecto y usted enfrentará un desafío de control de versiones para aumentar la Versión mayor para evitar problemas de integración. La idea del control de versiones semántico es identificar los cambios entre lanzamientos para evitar problemas de compatibilidad, su idea es más adecuada para fines comerciales que Microsoft con Windows, donde tiene la versión Comercial (Win 7, Win8, Win8.1) pero bajo el hood tienen diferentes versiones de archivos. –

+0

Supongo que las características no están planificadas al principio del proyecto (apenas es verdad) ya que todo depende de los requisitos del negocio. y si los requisitos corresponden a la función principal (un nuevo módulo completo) que requiere, por ejemplo, 20 sprints, entonces SÍ, que creará la versión principal para aumentar como 2.1.x.x después de la versión actual. No puedo entender los problemas de integración de los que estás hablando. –

2

En nuestra empresa, estamos utilizando cuatro concepto de versiones símbolo Es algo así como ABCD tipo..:

(major).(feature).(revision).(bug/refactoring) 

está relacionado con los tipos de emisión que utilizamos en nuestro ciclo de vida de desarrollo. podemos realizar un seguimiento de lo que ha hecho o ha cambiado entre dos versiones siguientes de un vistazo. al comparar dos siguientes números de versión se puede identificar el número y los tipos de problemas realizados. Para obtener más información, full documentation is here.

+0

El enlace está muerto. – zwcloud

+0

@zwcloud gracias por sus comentarios. He editado y reparado el enlace inactivo. – csonuryilmaz

Cuestiones relacionadas