Un script gancho es un programa que se activa por algún evento del repositorio, tal como la creación de una nueva revisión o la modificación de una propiedad no versionada. A cada gancho se le proporciona suficiente información para decirle qué evento es, sobre qué destino(s) se está operando, y el nombre de usuario de la persona que lanzó el evento. Dependiendo de la salida del gancho o del estado de salida, el programa gancho puede continuar la acción, detenerla, o suspenderla de alguna forma. Por favor lea Scripts gancho en el Libro de Subversion donde encontrará todos los detalles sobre la forma en la que están implementados los ganchos.
Estos scripts gancho se ejecutan por el servidor que hospeda el repositorio. TortoiseSVN también le permite configurar scripts ganchos del lado del cliente que se ejecutan localmente en ciertos eventos. Para más información consulte “Scripts gancho del lado del cliente”.
Puede encontrar scripts de ganchos de ejemplo en el directorio hooks del repositorio. Estos scripts de ejemplo son válidos para servidores Unix/Linux pero necesitan modificarse si su servidor está basado en Windows. El gancho puede ser un archivo batch o un ejecutable. El siguiente ejemplo muestra un archivo batch que puede ser usado para implementar un gancho pre-revprop-change.
rem Solo se permite cambiar mensajes de registro. if "%4" == "svn:log" exit 0 echo No se puede cambiar la property '%4' >&2 exit 1
Tenga en cuenta que cualquier cosa que mande a la salida estándar se descartará. Si desea que aparezca un mensaje en el diálogo Confirmación Rechazada debe enviarlo a la salida de error. En un archivo batch esto se consigue usando >&2
Si un script gancho rechaza su confirmación, entonces ésta es una decisión final. Pero se puede construir un mecanismo en el script mismo utilizando la técnica de la Palabra Mágica. Si el script quiere rechazar una operación, buscará primero en el mensaje de registro una frase específica, ya sea ésta una frase fija o quizás el nombre del archivo con un prefijo. Si encuentra la palabra mágica entonces procederá a permitir la confirmación. Si la frase no se encuentra puede bloquear la confirmación con un mensaje como “No dijiste la palabra mágica” :-)