Scripts de hook côté serveur

Un script hook est un programme déclenché par un certain événement du dépôt, comme la création d'une nouvelle révision ou la modification d'une propriété non versionnée. Chaque hook fournit suffisamment d'informations pour dire à quel événement il se rapporte, sur quelle(s) cible(s) il doit fonctionner et le nom utilisateur de la personne qui a déclenché l'événement. Selon le résultat du hook ou le statut retourné, le programme hook peut continuer l'action, l'arrêter, ou la suspendre d'une certaine façon. Veuillez vous référez au chapitre sur Scripts de Hook dans le manuel de Subversion pour plus de détails sur la façon dont les hooks sont mis en place.

Ces scripts de hook sont exécutés par le serveur qui héberge le dépôt. TortoiseSVN permet également de configurer des scripts de hook à exécuter côté client en réponse à certains événements. Voir la section intitulée « Scripts hook côté client » pour plus d'information.

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.

Surcharger les hooks

Si un script de hook refuse votre livraison alors ce refus est définitif. Mais vous pouvez construire un mécanisme de contournement dans ce même script en utilisant la technique du Mot Magique. Si le script veut refuser l'opération, il commence par chercher dans le message du journal la permission spéciale, soit une phrase à un endroit fixe ou peut-être le nom du fichier avec un préfixe. S'il trouve le mot magique alors il autorise la livraison à s'exécuter. Si la phrase n'est pas trouvée alors il peut bloquer la livraison avec un message du type « Vous n'avez pas dit le mot magique ». :-)