2012-02-13 10 views
17

Mi requisito es simple. Al principio de cada archivo no debe ser un comentario de bloque de esta manera:Incluir número de revisión SVN en el código fuente

/* 
* This file was last modified by {username} at {date} and has revision number {revisionnumber} 
*/ 

Quiero poblar el {username}, {date} y {revisionnumber} con el contenido apropiado de SVN.

¿Cómo puedo lograr esto con NetBeans y Subversion? He buscado mucho pero no puedo encontrar exactamente lo que necesito.

+0

posible duplicado de [Subversion: Añadir los datos de revisión al archivo de código de cometer] (http://stackoverflow.com/questions/2008843/subversion-add-revision-data-to-code-file-on- commit) – geoffspear

Respuesta

13

Miré this pregunta y obtuve algo de información útil. No es exactamente duplicado porque estoy trabajando con NetBeans, pero la idea es la misma. Este es mi cabecera:

/* 
* $LastChangedDate$ 
* $LastChangedRevision$ 
*/ 

luego voy a equipo> propiedades de Subversion> SVN y añadir svn:keywords como nombre de propiedad y LastChangedDate LastChangedRevision como valor de la propiedad.

Y cuando me comprometo desde NetBeans que se parece a esto:

/* 
* $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $ 
* $LastChangedRevision: 27 $ 
*/ 

Gracias a todos por el apoyo! Aceptaré mi respuesta porque otras respuestas no incluyen la información NetBeans. Sin embargo doy +1 a las otras respuestas.

+1

Esto también se puede hacer en Eclipse: haga clic con el botón derecho en el árbol del proyecto. seleccione ** Equipo -> Establecer propiedad **, elija 'svn: palabras clave' de ** Nombre de propiedad ** liste y escriba en ** Ingrese una propiedad ** cuadro de texto:' LastChangedDate LastChangedRevision' – ecle

+0

Al intentar agregar svn: palabras clave , nada sucede en NB 8. – Yster

4

Puede hacerlo con The SubWCRev Program.

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

Esto normalmente se realiza durante el proceso de compilación.

Si usa Linux, puede encontrar un binario de Linux here. Si lo desea, también puede escribir el suyo usando la salida svn log.

+0

¿Qué sucede si se usa 'Linux' también? –

+0

@PetarMinchev Vea mi respuesta actualizada. – RedFilter

10

Como estos datos solo existen después de el archivo fue confirmado, debe ser configurado por SVN mismo, no como un programa cliente. (Y el procesamiento del lado del cliente tiende a deshabilitarse o no se configura en absoluto). Esto significa que no hay una plantilla/sustituto simple como usted quiere, porque luego de la primera sustitución, las variables de la plantilla se perderían.

Puede encontrar información sobre la sustitución de palabras clave de SVN here. Luego cosas como $Rev$ pueden ser reemplazadas por $Rev: 12 $.

0

Recomiendo un enfoque ligeramente diferente.

Coloque el siguiente encabezado en la parte superior de sus archivos fuente.

/* 
* This file was last modified by {username} at {date} and has revision number {revisionnumber} 
*/ 

continuación, agregar una secuencia de comandos shell como esto

actualización posterior, la escritura de la caja

USERNAME=# // use svnversion to get username 
DATE=# // use svnversion to get revisio nnumber 
sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE} 

pre cometer guión

cat standard_header.txt > ${SOURCE_CONTROL_FILE} 
tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE} 
4

he seguido las sugerencias de Petar minchev, solamente pongo el La etiqueta $ LastChangedRevision $ no está en un bloque de comentarios, sino que está incrustado en una cadena. Ahora está disponible para mostrar programáticamente el número de revisión en un cuadro de diálogo Ayuda -> Acerca de.

String build = "$LastChangedRevision$"; 

Más tarde, puedo mostrar el valor de revisión en el cuadro de diálogo Acerca de usando un String que tiene toda la pelusa recortada.

String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim(); 
+0

Lo uso de la misma manera. – Semaphor

Cuestiones relacionadas