Ideas para el control del número de versión

Aquí está el entorno de desarrollo que estamos viendo:

  1. Principalmente .NET (C # principalmente)
  2. Desarrollo en Visual Studio 2008
  3. Control de fuente en SVN (server VisualSVN, cliente de Tortoise)
  4. Implementaciones con MSBuild / MSDeploy controladas por scripts de Rake

Lo que queremos comenzar es algún tipo de seguimiento de numbers de versión en implementaciones. El razonamiento principal aquí es que un no desarrollador pueda ver algo en los sistemas de producción y saber al less qué revisión de control de origen produjo, seguir los numbers de versión en nuestro sistema de ticketing, etc.

Mi primer pensamiento es marcar cada ensamblaje en time de compilation (a través del script Rake, me imagino) con un esquema de número de versión Major.Minor.Build. Podemos configurar Major y Minor manualmente en el script de Rake, que a menudo no cambiará, y usar el número de revisión de SVN actual como Build.

¿Hay una mejor manera de hacer esto? ¿Se confundirá el número de compilation construyendo a partir de una label de una revisión de troncal más antigua? ¿Alguna idea o consejo al respecto? Tal vez hay una herramienta en algún lugar que ya lo hace bastante bien?

Como ya está utilizando rastrillo para sus comstackciones, me gustaría señalar el marco de Albacore que hace que las versiones de sus ensamblajes en time de compilation sean realmente fáciles.

http://github.com/derickbailey/Albacore

proporcionamos una tarea "assemblyinfo" para rake que le permite especificar cualquier atributo de nivel de ensamblaje que desee: c # o vb.net. por ejemplo:

desc "Run a sample assembly info generator" assemblyinfo :assemblyinfo do |asm| asm.version = "0.1.2.3" asm.company_name = "a test company" asm.product_name = "a product name goes here" asm.title = "my assembly title" asm.description = "this is the assembly description" asm.copyright = "copyright some year, by some legal entity" asm.custom_attributes :SomeAttribute => "some value goes here", :AnotherAttribute => "with some data" asm.output_file = "lib/spec/support/AssemblyInfo/AssemblyInfo.cs" end 

puedes ver la asm.version , configurando la versión #. Sería realmente fácil usar una variable para establecer esto en lugar de un valor de cadena codificado.

asm.version = "1.2.3.#{svnrevision}"

también hay una tarea msbuild que hace que llamar a msbuild sea realmente fácil, y alnetworkingedor de 20 más. ver la página wiki en github para get una list completa.

para get más información sobre atún blanco, consulte estos resources: