Pregunta

Me gustaría implementar una forma de grabación de la versión de un proyecto dentro del código, de modo que puede ser utilizado para pruebas y para ayudar a realizar un seguimiento de bugs.Parece que el mejor número de la versión a utilizar sería el actual número de revisión de Subversion.¿Hay una manera fácil de enganchar a este número en un (C++ en mi caso) archivo de encabezado o algo, que luego se pueden conseguir en en el código?Supongo que esto es un post cometer gancho o algo?

¿Alguien tiene alguna experiencia en la aplicación de este (con el código para compartir, por favor?), o puede sugerir una alternativa mejor?Gracias.

¿Fue útil?

Solución

Mientras ingeniosa, la revisión de palabras clave truco sólo actualiza el archivo cuando se ha cambiado en esa revisión - si no cambia el archivo, a continuación, se seguirá reflejando la revisión anterior.

Si desea que el software para siempre refleja el total de número de la revisión, entonces usted tendrá que profundizar en el pertinentes SVN entradas del archivo y extraer de ella, que no es demasiado difícil (es un archivo XML).

Wikipedia no esta en su versión de la página para indicar la revisión del software que se ejecuta en vivo; el código está aquí - buscar por el getSvnRevision() método.

Otros consejos

De dos maneras:

Incrustar $Id$ o $Revisión$ dentro del código.A continuación, establezca svn:keywords="Id de Revisión". propiedad en el archivo.Esto le dará la última modificación de la revisión de que el archivo de origen.Bueno para proyectos más pequeños y secuencias de comandos.

Como alternativa, utilice un archivo Makefile proceso y la herramienta de línea de comandos svnversion.(Lenguaje específico - esto debería funcionar para C/C++)

echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

O algunas más complejas script de compilación con la sed y de la versión.h.en.A continuación, sólo #include versión.h

Que le dará el número de versión en el repositorio, que cambia con cada commit / actualización, y es probablemente una de las más número de versión apropiado para la mayoría de los proyectos.

Nota:También he utilizado un humano versión legible cadena que actualizar manualmente.El ejemplo daría: Versión:1.0.1-r13445

~J

También puede utilizar SubWCRev que es parte de TortoiseSVN.

SubWCRev es programa de consola para Windows que puede utilizar para leer el estado de una copia de trabajo de Subversion y, opcionalmente, realizar sustituciones de palabras clave en un archivo de plantilla.Esto se utiliza a menudo como parte del proceso de construcción como un medio de la incorporación de la copia de trabajo de la información en el objeto que está construyendo.Típicamente, se puede utilizar para incluir el número de revisión en un cuadro "Acerca de".

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

en el archivo Makefile, agregar:

SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...

a continuación, puede utilizar la macro SVN_REV en cualquier lugar en el código, por ejemplo:

printf ("Version: SVN %s\n", SVN_REV);

Usted puede utilizar el svn:keywords propiedad para habilitar el Rev la palabra clave.

Usted puede utilizar $Rev$ en el código del SVN ampliará automáticamente al actualizar a $Rev: 256 $ que puede, a continuación, analizar...

Más información en el manual de Subversion

Una buena para arriba-a-fecha de la solución:

Crear un Makefile contiene la siguiente línea (en la misma carpeta que YourFile.dox):

sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox

Y YourFile.dox debe contener esto:

...
PROJECT_NUMBER         = "Revision RevNumber"
...

Ahora:

  1. sed reemplaza RevNumber en el .dox con la salida de svnversion (ejecutado en la carpeta principal de su repositorio) y guarda el archivo modificado a YourFileDummy.dox
  2. doxygen se ejecuta en YourFileDummy.dox para generar la documentación
  3. La documentación contendrá ahora el número de revisión!
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top