Git pré-poussez les crochets
Je voudrais lancer une unité de tests avant chaque git push et si les tests échoue, annuler le pousser, mais je ne peux même pas trouver de pré-placer le crochet, il est pré-commit et pré-rebase seulement.
- connexes: stackoverflow.com/questions/31681746
Vous devez vous connecter pour publier un commentaire.
Je serais plutôt d'exécuter le test dans un pre-commit-crochet. Parce que le changement est déjà enregistré au moment de la validation. Pousser et tirer seulement d'échanger des informations sur déjà enregistré changé. Si un test échoue, vous auraient déjà un "cassé" la révision de votre référentiel. Si vous êtes le pousser ou pas.
Git a obtenu le
pre-push
crochet dans le1.8.2
libération.Échantillon
pre-push
script: https://github.com/git/git/blob/87c86dd14abe8db7d00b0df5661ef8cf147a72a3/templates/hooks--pre-push.sample1.8.2 notes de parler de la nouvelle pré-poussoir crochet: https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.txt
Pré-poussez les crochets sont ce dont j'avais besoin avec les pré-engager les crochets. En dehors de la protection d'une branche, ils peuvent également fournir une sécurité supplémentaire combiné avec pre-commit crochets.
Et pour un exemple sur la façon d'utiliser (prises et adoptées, et renforcée à partir de cette belle entrée)
Exemple Simple pour vous connecter à l'errance, l'exécution des tests et de pousser ensuite
Comme vous pouvez le voir l'exemple utilise une branche protégé, sous réserve de la pré-placer le crochet.
Si vous utilisez la ligne de commande, la façon la plus simple de le faire est d'écrire une poussée de script qui s'exécute vos tests unitaires et, s'ils réussissent, complète le pousser.
Modifier
De git 1.8.2 cette réponse est obsolète. Voir manojlds la réponse ci-dessus.
Il n'y a pas de crochet pour elle, parce qu'un push n'est pas une opération qui modifie votre référentiel.
Vous pouvez effectuer les vérifications sur le côté de réception si, dans le
post-receive
crochet. C'est là que vous le feriez habituellement rejeter l'arrivée d'un push. L'exécution des tests unitaires peut-être un peu intensive à faire à un crochet, mais c'est à vous de voir.Pour l'enregistrement, il y a un patch Git 1.6 qui ajoute une pré-placer le crochet. Je ne sais pas si elle va à l'encontre de 1,7.
Plutôt que de gâchis avec cela, vous pouvez exécuter pousser script comme @kubi recommandé. Vous pouvez également faire une tâche Rake au lieu de cela il est donc dans votre repo. ruby-git pourrait aider avec ceci. Si vous cochez la cible repo, vous pouvez exécuter des tests uniquement lorsque l'on pousse à la production des pensions.
Enfin, vous pouvez exécuter vos tests dans votre
pre-commit
crochet, mais vérifier que la branche est engagé à. Alors vous pourriez avoir un, disons, unproduction
branche qui exige que tous les tests passent avant d'accepter un commit, mais votremaster
s'en fout. limerick_rake peut être utile dans ce scénario.La script lié par le très-voté répondre montre les paramètres etc, à la
pré-push
crochet ($1
est à distance de nom,$2
URL) et comment accéder à la commet (lignesread
à partir de stdin ont une structure<local ref> <local sha1> <remote ref> <remote sha1>
)