Scripts de hook côté serveur

Un script hook est un programme déclenché par un certain événement du référentiel, 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 référentiel. 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.

Des exemples de scripts hook peuvent être trouvés dans le répertoire hooks du référentiel. Ces exemples de scripts sont appropriées pour des serveurs Unix/Linux, mais doivent être modifiés si votre serveur est basé sur Windows. Le hook peut être un fichier batch ou un exécutable. L'exemple ci-dessous montre un fichier batch qui pourrait être utilisé pour mettre en oeuvre un hook de pre-revprop-change.

rem Autorise seulement les changements sur les commentaires.
if "%4" == "svn:log" exit 0
echo Property '%4' ne peut pas être modifié >&2
exit 1

Notez que tout ce qui est envoyé sur stdout est abandonné. Si vous voulez qu'un message apparaisse dans la boîte de dialogue du rejet de la livraison vous devez l'envoyer sur stderr. Dans un fichier batch, c'est réalisé en utilisant >&2

Surcharger les hooks

Si un script de hook rejette votre livraison c'est définitif. Ceci dit, vous pouvez ajouter un mécanisme au sein du script grâce à la technique du Mot Magique. Avant d'acter le rejet, le script parcours les commentaires de livraison, et recherche un éventuel message spécial, prédéfini ou le nom de fichier lui même associé d'un préfixe. S'il trouve le mot magique il autorise alors la livraison. Si le message spécial n'est pas trouvé, la livraison est bloquée avec un message comme « Vous n'avez pas dit le mot magique » :-)