¿Cómo puedo tener un gancho que sólo se llama cuando se hacen compromete a TRONCO post-commit?

StackOverflow https://stackoverflow.com/questions/2146374

Pregunta

Tengo un repositorio que tiene los siguientes directorios:

  • ramas
  • etiquetas
  • tronco

El directorio trunk contiene la línea principal de desarrollo. He creado un script gancho post-commit para el repositorio de actualizaciones que una copia de trabajo (del tronco) cuando un usuario se compromete atrás al repositorio.

Se ve algo como esto:

/usr/bin/svn update /path/to/a/working/copy

He acabo de crear una rama del código cuando estoy a punto de comenzar algunos cambios importantes, pero notado que cuando cometo mis cambios en rama se llama el gancho post-commit y actualiza la copia de trabajo (copia del tronco) .

¿Hay alguna manera de modificar cualquiera de mi post-commit script gancho o un ajuste que puedo hacer que sólo se actualizará la copia de trabajo Si el envío se hizo en el directorio del tronco y no cualquier otro directorio?

¿Fue útil?

Solución

Como se puede ver en esta documentación , se pasan los parámetros al script post-commit.

  

El repositorio pasa dos argumentos a este programa:. La ruta de acceso al repositorio, y el nuevo número de revisión que se creó

El gancho post-commit podría ser cualquier programa de cualquier tipo:. Una escritura del golpe, un programa en C, un script en Python ... Lo que pasa es que los lanzamientos de cáscara de este programa, con los dos parámetros

Se puede encontrar una lista de secuencias de comandos interesantes aquí . Un buen comienzo sería este pitón guión, que utiliza las librerías Python SVN.

Tenga en cuenta que la ruta proporcionada no es la misma que la ruta de acceso al archivo que va a registrar (ver de Pablo respuesta ). Pero el uso de esta información con el revnum le ayudará a obtener la lista de los cambios, desde donde se puede determinar si las operaciones se han realizado en el tronco o no.

Otros consejos

Además de la respuesta de Bishiboosh , vale la pena señalar que los ganchos pueden ser cualquier programa. Es decir, si quisiera, podría escribir el programa en C. Los parámetros que se transmiten se describen en el doc .

Para un buen repositorio de secuencias de comandos para conseguir la inspiración de, echar un vistazo a la página href="http://subversion.tigris.org/tools_contrib.html#hook_scripts" rel="nofollow herramientas de subversión . En general, si quieres hacer algo de procesamiento condicional basada en el contenido de la transacción, y lo hace, ya que sólo desea proceso si los archivos están en el tronco, entonces será más fácil de usar Python, ya que viene con una montón de herramientas para examinar las transacciones. Este script es un buen lugar para empezar a buscar la inspiración.

Tenga en cuenta, que el camino hacia el parámetro, no es la misma que la ruta de acceso al archivo que va a registrar. Usted podría tener varios archivos en el registro después de todo ... Lo que pasó es la ubicación del depósito, y la revisión del cambio. El uso de estas dos piezas de información que puede obtener la información sobre el cambio del repositorio, y utilizar esa información para decidir si se debe realizar una acción o no en el post-commit hook.

Aquí está otro ejemplo (en Perl) que comprueba explícitamente la ruta de los archivos en el registro. Este es un script mucho más complicado, pero lo más probable es que los partes salientes puede ser arrancado y volver a utilizar.

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