una tutorial trabajo tag subir repositorio proyecto español copia con como comandos clonar archivos svn debugging testing revision versions

tutorial - tag svn



Obtener el número del repositorio de subversión en código (6)

Me gustaría implementar una forma de registrar la versión de un proyecto dentro del código, para que se pueda usar al probar y ayudar a rastrear errores. Parece que el mejor número de versión para usar sería simplemente el número de revisión actual de Subversion. ¿Hay alguna manera fácil de enganchar este número en un archivo de encabezado (C ++ en mi caso) o algo así, que luego pueda obtener en el código? Supongo que esto es un gancho de commit de post o algo así?

¿Alguien tiene experiencia en implementar esto (con código para compartir, por favor?), O puede sugerir una mejor alternativa? Gracias.


Dos caminos:

Incruste $ Id $ o $ Revision $ dentro del código. A continuación, configure la propiedad svn: keywords = "Id Revision" en el archivo. Esto le dará la última revisión modificada de ese archivo fuente. Bueno para pequeños proyectos y scripts.

Alternativamente, utilice un proceso impulsado por Makefile y la herramienta de línea de comandos svnversion. (Específico del lenguaje: esto debería funcionar para C / C ++)

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

O algún script de compilación más complejo con sed y version.h.in. Entonces solo #include version.h

Eso le dará el número de versión del repositorio, que cambiará con cada confirmación / actualización, y es probablemente un número de versión más apropiado para la mayoría de los proyectos.

Nota: También utilicé una cadena de versión legible para humanos que actualicé manualmente. El ejemplo daría: Versión: 1.0.1-r13445

~ J


Puede usar la propiedad svn:keywords para habilitar la palabra clave Rev

Luego puede usar $Rev$ en su código y SVN lo expandirá automáticamente al actualizar a $Rev: 256 $ que luego puede analizar ...

Más información sobre el manual de Subversion


Si bien es ingenioso, el truco de la palabra clave de revisión solo actualiza el archivo cuando se modificó en esa revisión; si no cambia el archivo, continuará reflejando la revisión anterior.

Si desea que el software siempre refleje el número de revisión general, deberá profundizar en el archivo de entradas SVN correspondiente y extraerlo, que no es demasiado difícil (es un archivo XML).

Wikipedia hace esto en su página de versión para indicar la revisión del software que se está ejecutando en vivo; el código está aquí - busque el método getSvnRevision () .


También puede usar SubWCRev, que es parte de TortoiseSVN.

SubWCRev es un programa de consola de Windows que se puede utilizar para leer el estado de una copia de trabajo de Subversion y opcionalmente realizar una sustitución de palabras clave en un archivo de plantilla. Esto se usa a menudo como parte del proceso de compilación como medio para incorporar información de copia de trabajo en el objeto que está creando. Normalmente, se puede usar para incluir el número de revisión en un cuadro "Acerca de".

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


Una buena solución actualizada:

Cree un Makefile contenga 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 debería contener esto:

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

Ahora:

  1. sed reemplaza RevNumber en .dox con la salida de svnversion (ejecutada en la carpeta principal de su repositorio) y guarda el archivo modificado en YourFileDummy.dox
  2. doxygen se ejecuta en YourFileDummy.dox para generar la documentación
  3. ¡Su documentación ahora contendrá el número de revisión!

en su archivo Makefile, agregue:

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

luego puede usar macro SVN_REV en cualquier parte de su código, por ejemplo:

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