Manuals

Scripts hook côté serveur

Un script hook, ou script associé, 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 reçoit suffisamment d'informations pour dire de quel événement il s'agit, sur quelle(s) cible(s) il doit fonctionner et le nom d'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éree au chapitre sur Scripts hook dans le manuel de Subversion pour plus de détails sur la façon dont les hooks sont mis en place.

Ces scripts hook sont exécutés par le serveur qui héberge le dépôt. TortoiseSVN permet également de configurer des scripts hook côté client à exécuter en local 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 se trouvent dans le répertoire hooks du dépôt. Ces exemples de scripts sont utilisables sur des serveurs Unix/Linux, mais doivent être modifiés si votre serveur est sur une machine 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 implémenter un hook pre-revprop-change.

rem N'autoriser que les modifications de commentaires.
if "%4" == "svn:log" exit 0
echo Impossible de modifier la propriété '%4' >&2
exit 1

Veuillez remarquer que tout ce qui est envoyé sur stdout est ignoré. Si vous voulez qu'un message apparaisse dans la boîte de dialogue de refus de livraison, il faut l'envoyer sur stderr. Dans un fichier batch, cela se fait en utilisant >&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 ». :-)

TortoiseSVN homepage