Vous pouvez écrire votre hook en utilisant C ou C++ si vous le souhaitez. La plupart des gens utilisent Perl ou Python.
L'élément principal est que svnlook
devrait être utilisé dans votre script de crochet et non svn
. svnlook est plus rapide et plus sûr que svn
. En fait, dans les scripts de pré-validation, vous devez utiliser svnlook
car vous n'avez pas de révision de référentiel.
Voici quelques choses à garder à l'esprit au sujet de votre crochet post-commit
:
- Vous ne pouvez pas modifier une révision, et ne pas essayer de valider les modifications. Votre hook post-commit finira par se appeler. Si vous voulez que vos développeurs suivent certains paramètres, vous devez avoir un hook
pre-commit
qui échoue si les développeurs ne le font pas correctement.
- Lorsque Subversion appelle votre hook
post-commit
, la variable d'environnement PATH
a été supprimée. Si vous devez accéder à une autre commande ou un fichier, vous devrez fournir le chemin complet vous-même.
- Subversion vous transmet certains paramètres de la ligne de commande . Pas une ligne de commande réelle, mais cela signifie que vous pouvez trouver ces paramètres dans
ARGV
. Deux paramètres vous seront transmis:
- Le chemin du référentiel sur le serveur (pour la commande
svnlook
).
- La révision du référentiel.
Tout ce que vous devez déduire si svnlook
(que vous pouvez exécuter via la commande system
. Cependant, vous pourriez être en mesure d'utiliser le construit puisque vous en train d'écrire les choses en C et C++ dans Subversion API).
Autre possibilité: Utilisez un système de construction continue tel que Jenkins pour effectuer le travail sale pour vous.Vous pourriez trouver plus facile de travailler avec Jenkins au lieu de vous inquiéter de savoir comment un hook post-commit pourrait accomplir cette tâche. L'un des avantages de Jenkins est que lorsque les choses tournent mal, vous ne renvoyez pas les messages post-commit qui ont échoué à l'utilisateur (qui n'est probablement pas en faute). Au lieu de cela, vous obtenez un journal complet de ce qui s'est passé et alertez la personne qui peut réellement résoudre le problème.
Voici un sample of one que j'ai écrit qui est en Perl. Je ne sais pas si ça te fera du bien.
Tout d'abord, [réponses sont déjà disponibles ici] (http://stackoverflow.com/questions/139315/can-i-run-a-script-when-i-commit-à-subversion). Deuxièmement: non. Il ne doit pas être un "script". Tout ce qui a un bit exécutable fonctionne. Vous pouvez aussi écrire vos hooks en C ou en C++. –