47 votes

Le crochet de validation de poste n'est pas en cours d'exécution

Mon hook de validation de publication ne s'exécute pas après git. J'ai vérifié que le crochet fonctionne si je l'exécute simplement à partir du terminal. Le code dans le crochet est :

 #!/bin/sh
#.git/hooks/post-commit
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

perl -pi -e 's/([a-f0-9]+)$/'$( git rev-parse HEAD )/ ../../config/commit.git

J'ai renommé le fichier en post-commit dans ./.git/hooks/ et les autorisations sont -rwxr-x-r-x donc je ne sais pas pourquoi cela ne fonctionne pas.

206voto

Steven Lu Points 8021

Je vais laisser ceci ici comme réponse car je suis tombé sur ma propre réponse lorsque mon hook post-commit ne fonctionnait pas :

chmod +x .git/hooks/post-commit

S'applique probablement à tout type de crochet. En fait, s'applique probablement à tout type de script.

30voto

Peter Farmer Points 1506

Essayez de mettre quelques lignes d'écho avant et après la ligne perl comme ceci :

 echo "post-commit started"
perl ...........
echo "post-commit finished"

De cette façon, vous pouvez confirmer si le script est en cours d'exécution, car lorsque vous exécutez

 git commit

tu devrais voir

 post-commit started
post-commit finished

Vers la fin de votre sortie.

0voto

n00b Points 797

En plus des réponses notées ici, notez que si vous attendez une entrée utilisateur dans votre hook, vous devez rediriger l'entrée standard vers le clavier comme ceci (au moins pour un script bash);

 exec < /dev/tty

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X