web-dev-qa-db-fra.com

Le crochet pré-engagé ne fonctionne pas sous Windows

Je commence juste à regarder dans les crochets de Git, mais je n'arrive pas à les convaincre de courir.

J'ai configuré un référentiel local, il y a donc maintenant un répertoire ".git" dans mon dossier de projet. J'ai ajouté un fichier ".cmd" dans le répertoire C: /path/to/my/project/.git/hooks nommé "pre-commit.cmd". Voici le contenu de ce fichier:

echo "HOOK RUNNING"
echo. 2>C:/path/to/my/project/.git/hooks/EmptyFile.txt

Cela devrait faire écho au texte "CROCHET RUNNING" et créer un fichier texte vide dans ce répertoire. Cependant, si je valide les modifications via mon IDE (NetBeans) ou utilise Git Bash pour valider, aucun des deux ne semble exécuter mon hook de pré-validation car aucun fichier n'est créé.

Je crois comprendre que tout ce que vous avez à faire pour obtenir un hook à exécuter est d’ajouter un exécutable avec le nom du hook (comme je l’ai fait). Est-ce que je fais quelque chose de mal?

Note: Ceci est sur un PC Windows 7.

34
user1578653

Pourquoi ne pas nommer votre hook pre-commit (sans extension)?

EDIT: et ajoutez #!/bin/sh sur la première ligne ou #!/bin/bash (suggéré dans les commentaires)

41
Asenar

Vous n'avez probablement pas les autorisations nécessaires pour exécuter le fichier pre-commit

Courez dans votre terminal: 

chmod +x .git/hooks/pre-commit

Merci à @vaughan pour avoir donné l'idée

33
edi9999

Pour moi, aucune des solutions ci-dessus n'a fonctionné. J'ai déplacé le fichier de pré-validation des crochets vers un autre emplacement, le supprimant efficacement.

Cela a fonctionné pour moi: D 

1
Nilotpal

dans mon cas où j'ai fait npm install & supprimé accidentellement .git dossier, npm install pre-commit --save travaillé

0
Theo