web-dev-qa-db-fra.com

Le post-validation ne fonctionne pas

Mon hook post commit ne fonctionne pas après git. J'ai vérifié que le crochet fonctionne si je le lance simplement depuis le 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 ça ne marche pas.

43
Dave Long

Essayez de mettre des 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 réellement 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.

28
Peter Farmer

Je vais laisser cela ici comme réponse parce que je suis tombé sur ma propre réponse quand 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.

194
Steven Lu

Mon script post-commit n'était pas appelé car:

J'avais nommé le script post-commit.sh, plutôt que simplement post-commit.

Pour activer un script de hook, placez un fichier dans le sous-répertoire hooks de votre répertoire .git qui est nommé de manière appropriée (sans aucune extension) et est exécutable. À partir de ce moment, il faut l'appeler. Nous couvrirons la plupart des principaux noms de fichiers de crochet ici. Voir git-scm

Je ne sais pas pourquoi j'avais dans ma tête que les crochets avaient besoin de l'extension de fichier bash.

Je n'ai pas non plus réalisé que les scripts de hook ne peuvent pas avoir des extensions de fichier. Par exemple,

Si vous souhaitez utiliser les scripts de hook fournis, vous devrez les renommer; leurs noms de fichiers se terminent tous par .sample

J'espère que cela aide quelqu'un.

19
Bryce Johnson

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 cela (au moins pour un script bash);

exec < /dev/tty
0
n00b