Scripts gancho en el lado del servidor

Un script gancho (N.d.T.: hook en inglés) es un programa lanzado desde algún evento de repositorio, como la creación de una nueva revisión o la modificación de una propiedad no versionada. Cada gancho maneja suficiente información para decir de que evento se trata, con que destino(s) está operando, y el nombre de usuario de la persona que lanzó el evento. Dependiendo del resultado del gancho o del estado de la respuesta, el programa gancho puede continuar la acción, detenerla o suspenderla de alguna manera. Por favor dirígase al capítulo Scripts gancho en el libro de Subversion para ver todos los detalles acerca de los ganchos que están implementados.

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”.

Sample hook scripts can be found in the hooks directory of the repository. These sample scripts are suitable for Unix/Linux servers but need to be modified if your server is Windows based. The hook can be a batch file or an executable. The sample below shows a batch file which might be used to implement a pre-revprop-change hook.

rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
    

Note that anything sent to stdout is discarded. If you want a message to appear in the Commit Reject dialog you must send it to stderr. In a batch file this is achieved using >&2.

Ignorando Ganchos

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 :-)