2008-09-30 13 views

Respuesta

21

Yo quería una disponibilidad similar y encontré $ Rev $ insuficiente porque solo se actualizó para un archivo si la revisión de ese archivo se modificó (lo que significaba que tendría que ser editado y comprometido por mucho tiempo: no era algo que quisiera do). En cambio, quería algo basado en el número de revisión del repositorio.

Para el proyecto en el que estoy trabajando ahora, escribí un script Perl que ejecuta svnversion -n desde el directorio más alto de mi copia de trabajo y muestra la información de revisión más reciente en un archivo .h (en realidad lo comparo una reversión guardada en un archivo no versionado en mi copia de trabajo para que no sobrescriba la información de revisión actual en cada compilación, pero si decide hacerlo depende de usted). Este archivo .h (o una serie de archivos si necesario, según su enfoque) se hace referencia tanto en mi código de aplicación como en los archivos de recursos para obtener la información donde me gustaría.

Esta secuencia de comandos se ejecuta como un paso previo a la compilación para que todo esté actualizado antes de que comience la compilación y los archivos apropiados sean reconstruidos automáticamente por su herramienta de compilación.

+9

TortoiseSVN tiene una pequeña utilidad auxiliar llamada SubWCRev.exe, que encuentra el número de revisión confirmado más alto de una copia de trabajo. – dummy

+0

¡Es bueno saberlo! Mi equipo usa TortoiseSVN mucho, así que probablemente hubiera sido bueno saber sobre el ayudante cuando escribí los guiones. Puedo examinar SubWCRev.exe en algún momento. Sería bueno dejar la dependencia de la distribución normal de Subversion ... – antik

+1

Un consejo para otros que implementan esta idea: Considere hacer que su script escriba una nueva versión solo si los cambios realmente tienen hecho localmente; es decir, solo si el valor generado por 'svnversion' incluye una" M "entre el conjunto final de caracteres. Eso le permitirá reconstruir su proyecto después de una confirmación sin que cambie el número de versión. (Consulte [la documentación 'svnversion'] (http://svnbook.red-bean.com/en/1.7/svn.ref.svnversion.re.html) para obtener una descripción del formato de su salida). –

3

Puede obtener SVN to embed it for you, si eso resuelve el problema. Vea la palabra clave $ Rev $ en esa página.

+5

Desafortunadamente, la palabra clave $ Rev $ solo proporciona la última revisión en la que * se modificó * el archivo en el que aparece *. –

3

Eche un vistazo a svn keyword substitution here. ¡Hay otra pregunta SO here que encontré a través de google!

3

La solución de antik es la que utilizamos. Tenga cuidado al usar variables de entorno, el archivo .h asegura que puede tener una dependencia que provocará la recompilación de los archivos que lo necesitan cuando cambia el número de svn rev.

+0

Buen punto: olvidé que era otro beneficio en nuestro entorno. – antik

15

¿Qué le parece usar SubWCRev la herramienta de línea de comandos que se envía con TortoiseSVN. Usted crea un archivo de plantilla con tokens como $ WCREV $ $ WCDATE $ etc. Luego, realice un paso previo a la construcción que ejecute SubWCRev en su archivo de plantilla para crear el archivo fuente real que se alimenta al compilador.

Cuestiones relacionadas