Git post-recevoir crochet ne fonctionne pas

Mon installation est un windows serveur XAMPP, avec cURL est activé, et Git et Hudson installé. Hudson sondages Git chaque minute de surveiller les changements, et s'il les trouve, il crée une génération. J'utilise ce build que mon serveur de test. Cela fonctionne très bien.

Je tiens à mettre en place un post-recevoir crochet sur ma centrale dépôt distant qui exécute la force de construire la fonction de l'Hudson.

J'ai créé un post-recevoir un fichier appelé "post-recevoir" dans les crochets répertoire dans mon central repository Git, celui qui est poussé à partir des développeurs branches locales. Ils pousser leur propre branche sur le référentiel central. Je veux lancer le post-recevoir construire immédiatement après chaque pression, au lieu d'avoir Hudson sondage Git chaque minute.

Quand j'ouvre un shell sur le serveur distant et exécuter "post-recevoir" dans les crochets dossier, il s'exécute. Il n'est tout simplement pas appelé quand les gens poussent à partir de leur dépôt local des copies de la centrale.

Peut-être que je ne suis pas d'expliquer ce droit, mais c'est la façon dont je comprends Git.

L'après-recevoir le code est deux lignes:

#!/bin/sh
curl http://myserver.com:8080/hudson/job/myjobname/build?token=mytoken

Encore une fois, quand j'ouvre un shell et de l'exécuter, il fonctionne, mais quand quelqu'un pousse, rien ne se passe, jusqu'à ce qu'une minute ou moins, Hudson se rend compte que Git a été changé, et puis il génère.

Je suis heureux de clarifier si besoin. Toute aide est grandement appréciée.

EDIT: Après avoir joué un peu avec elle, je me sens comme peut-être post-recevoir n'est pas d'exécution car les références ne sont pas mis à jour de quelque chose? Le git documentation dit

Il s'exécute sur le dépôt distant une fois, après toutes les refs ont été mis à jour.

Est-ce à dire, si rien n'mises à jour, il ne sera pas exécuté? Et si oui, je suis sûr que les choses sont la mise à jour de toute façon donc ça ne devrait pas s'appliquer.

Voici mon processus:
Apporter des modifications à l'échelle locale.
Commettre des modifications.
Appuyez sur à partir de ma TÊTE à la distance de la branche appelée "mybranch" (pas la branche master, ce qui est vérifié)
C'est le point où je veux que mon crochet à exécuter.

L'utilisateur de votre git daemon est en cours d'exécution a l'autorisation d'exécution de ce script?
Pas sûr. Il l'exécute quand je le lance via Git Bash, mais il ne fonctionne pas quand je pousse. Comment puis-je vérifier les permissions?
l'autorisation correcte dépend de la façon dont vous êtes le partage de votre dépôt, et les configurations réelles. Cependant, msquared de vous indique le moyen de donner de l'exécutable de l'autorisation à tous les utilisateurs/groupes, de sorte qu'il devrait fonctionner si le problème est en effet que.
Le fichier est exécutable, il est tout simplement pas en cours d'exécution, ou exécutée correctement, quand j'ai git push. D'autres idées?
Mettre un echo déclaration dans votre post-recevoir crochet pour voir si elle est effectivement en cours d'exécution, par exemple, "echo crochet couru!" -- git de l'envoyer à l'appelant.

OriginalL'auteur spanky | 2011-02-09