Conseguir el repositorio de subversion número en código
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.
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...
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:
sed
reemplazaRevNumber
en el .dox con la salida desvnversion
(ejecutado en la carpeta principal de su repositorio) y guarda el archivo modificado aYourFileDummy.dox
doxygen
se ejecuta enYourFileDummy.dox
para generar la documentación- La documentación contendrá ahora el número de revisión!