Pregunta

En mi aplicación web tengo un archivo que se mantenga el actual número de revisión a través de $Rev$.Este trabajo bien, excepto, si yo no realizar cambios en ese archivo, no se compromete.

Existe de todos modos me puede obligar a un único archivo para obtener siempre comprometidos con el servidor SVN?

Estoy utilizando TortoiseSVN para Windows por lo que cualquier código o paso por paso las instrucciones que sería de gran ayuda.

¿Fue útil?

Solución

Si usted tiene TortoiseSVN instalado, usted también tiene la SubWCRev herramienta disponible.El uso de esa herramienta para obtener la revisión en lugar de abusar de las $REV$ palabra clave.

  1. crear un archivo de plantilla que contiene la define, tal vez algo como

    const long WC_REV = $WCREV$;

    en un archivo con el nombre de la versión.h.tmpl

  2. en cada generación, llamada SubWCRev para crear el 'real' archivo que se puede utilizar en su aplicación:

    SubWCRev ruta\a\workingcopy ruta\a\versión.h.tmpl ruta\a\versión.h

Esto creará el archivo de la versión.h a partir de la versión.h.tmpl, con el texto $WCREV$ reemplazado con la revisión de su copia de trabajo se encuentra actualmente en.

El docs para SubWCRev puede ayudar también.

Otros consejos

Básicamente, usted desea que la salida de la svnversion comando en un archivo.

Estos archivos se guardan fuera del repositorio, y crea automáticamente un script de compilación.Yo le sugiero que haga lo mismo.Si usted no cree, pero sólo para un svn up en el lado del servidor, solo llame svnversion después de svn up o crear un script de shell para realizar ambas acciones.

Si han para que se mantenga en el repositorio por otro lado, llamar a svnversion en un gancho pre-confirmación podría ser su mejor apuesta.

Creo que no puede ser la comprensión de cómo la $Rev$ bandera de obras.El objetivo de la Rev bandera no es tener esta revisión siempre comprometidos en el repositorio de subversion.El objetivo es que en una actualización, el Rev bandera siempre va a ser lo que la revisión es. Usted no debería tener que poner el código en la subversión que contiene la revisión. Subversion es muy bueno para mantener un registro de esa información para usted.

Lo que probablemente no es eso, es necesario establecer una propiedad en el archivo, de modo que la Revisión de palabras clave se procesan adecuadamente.

svn propset svn:keywords "Revision" file.txt

Esto se asegurará de que cada vez que usted realice una actualización, la $Rev:xxx$ bandera será actualizado con la versión actual.Usted no necesita preocuparse acerca de cómo está comprometida con el repositorio.

@gatekiller:Parece TortoiseSVN no apoyo Lado Del Cliente Ganchos.

Este trabajo bien, excepto, si yo no realizar cambios en ese archivo, no se compromete.

Si el archivo no cambia nunca, ¿por qué usted necesita para commmit cada vez?

[EDITAR] @Sean = yo entiendo lo que él está tratando de hacer, pero si el archivo es nunca llegar actualizados por medio de un gancho o de algún otro proceso y por lo tanto nunca cambiar, a continuación, SVN nunca va a recogerlo.

Sugiero cambiar el enfoque, cometiendo un archivo cada vez que significa implícitamente mantener el mundial de número de la revisión en ese archivo.Allí el usuario puede necesitar otra palabra clave, GlobalKey, cuya inexistencia se explica aquí Yo en realidad no se utiliza mencionado svnversion sin embargo, puede llevar a una solución.

Podría la revisión de número de archivo de ser cambiado por una secuencia de comandos que implementa su sitio web desde el SVN para el servidor web?

No estoy seguro acerca en Windows, pero el uso de un bash script, me gustaría hacer algo como..

$ version=$(svnversion)
$ svn export . /tmp/staging/
Export complete.
$ echo "Revision: ${version}" > /tmp/staging/version.txt

Entonces /tmp/staging/version.txt contendrá "Revisión:1" (o lo que sea el mayor número de revisión es).

Usted podría, por supuesto, sustituir el identificador en un archivo, como $Rev$ (en lugar de crear version.txt como en el ejemplo anterior)

Dependiendo de su cliente, algunos de ellos ofrecen un gancho pre-confirmación de que se puede implementar algo que simplemente "toca" el archivo como marca cambiado.Si su uso de algo como Visual Studio puede crear un post de construir tarea que se "toca" el archivo, pero usted tiene que asegurarse de que usted haga una generación antes de confirmar los cambios.

@gradonmantank:Porque quiere que el archivo esté actualizado con la última versión número de revisión.¿Leyó su pregunta?

El gancho pre-confirmación podría funcionar.

Yo solía tener una forma manual de hacerlo.Me gustaría ejecutar un script que haría uso de la sed para reemplazar un comentario con la marca de tiempo actual en mi $Rev$ archivo.De esa manera, el contenido del archivo iba a cambiar y la Subversión iba a cometer.

Lo que no hice fue que para el siguiente paso:el uso de Subversion repository de ganchos para automatizar el proceso.El problema es que no estoy seguro de si está permitido cambiar el contenido del archivo en los ganchos.La documentación parece sugerir que usted no puede.

En lugar de eso, supongo que necesitaría un poco de secuencia de comandos que desea ejecutar en el lugar de la svn commit comando que primero se actualiza la hora y, a continuación, ejecuta el normal cometer.

Comitting el archivo no haría ningún bien.El archivo no está comprometido con la versión completa en el interior, es reemplazado con sólo la palabra clave.Si usted mira el archivo dentro del repositorio va a ver esto.

Como tal, usted necesita para forzar a que se actualice el archivo de alguna manera en su lugar.

Si usted está en la plataforma de Windows, puede utilizar el SubWCRev herramienta, que se distribuye con TortoiseSVN.Documentación aquí.

Usted puede utilizar svn pre-commit-ganchos para hacerlo.
En general, la idea que tengo en mente es crear uno que antes de la confirmación va a colocar el nuevo número de la revisión en el archivo (conseguir que el uso de svnlook) o tal vez el cambio de una falsa propiedad en el archivo (tiene que cambiar o SVN se ignoran).

Para obtener más información acerca de la pre-commit-ganchos he encontrado esta página útil.

Creo que el mejor enfoque para garantizar que hay un archivo en la aplicación web que tiene el SVN número de revisión es no tener un archivo de comprometerse, sino para extraer de ella como parte de su secuencia de comandos de compilación.

Si se utiliza maven, usted puede hacer esto con el maven-número de compilación-plugin.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top