Y a-t-il un crochet git pour tirer?

157

Je dois effectuer certaines actions (préparer les fichiers de message gettext * .mo) sur mon projet à chaque fois que je l'exécute git pull. Y a-t-il un crochet git approprié que je pourrais utiliser à cette fin s'il vous plaît?

msgre
la source
15
@Alan: Ce n'est certainement pas un doublon. Cette question concerne un crochet du côté local , là où vous exécutez git pull. Celui que vous avez lié consiste à déclencher un crochet sur la télécommande , lorsque quelqu'un tire dessus. (Et c'est une question très étrange - cela implique qu'ils utilisent un repo central non nu ...)
Cascabel
2
@Alan: Assez facile à rater si vous écrémiez - j'espère que je n'ai pas été trop dur. Je suis juste paranoïaque à propos des questions qui ne sont pas correctement fermées, car les votes de réouverture prennent beaucoup plus de temps à s'accumuler.
Cascabel
1
Jefromi: Vous avez absolument raison. Pas besoin de s'inquiéter. J'étais juste triste d'avoir écumé et initié la clôture.
Alan Haggai Alavi

Réponses:

184

La githookspage de manuel est une liste complète des hooks. Si ce n'est pas là, ça n'existe pas.

Cela dit, il existe un crochet post-fusion et toutes les extractions incluent une fusion, bien que toutes les fusions ne soient pas des extractions. Il est exécuté après les fusions et ne peut pas affecter le résultat. Il n'est jamais exécuté s'il y a des conflits; vous devrez le récupérer avec le hook post-commit si cela compte vraiment, ou l'invoquer manuellement.

Cascabel
la source
39
@Jefromi "tous les pulls incluent une fusion", même si je fais un pull --rebase?
FMaz008
11
git pullNous avons également constaté que la fusion ne s'exécute jamais lors de l'exécution s'il n'y a aucune modification à intégrer (vous êtes déjà à jour).
Joe Bergantine
11
@jbergantine: Je suppose que j'ai été imprécis dans ma réponse - tous les pulls qui ne sont pas des no-ops incluent une fusion. Mais ... en général, si vous essayez de prendre des mesures chaque fois qu'une fusion se produit, je ne pense pas que vous vouliez agir lorsque quelqu'un effectue une fusion sans opération. Par exemple, ce serait un gaspillage pour l'OP de recréer ces fichiers si rien n'a changé.
Cascabel
12
Si vous voulez vraiment faire quelque chose à chaque fois que vous tirez ... vous pouvez alias `` git pull '' afin d'appeler un script qui fait le git pull puis faire autre chose
Shadow Radiance
13
git pullwith rebase (avec --rebaseou avec la configuration pull.rebase=true) n'inclut pas de fusion et ne déclenchera pas le hook post-fusion. Dans ce cas, vous pouvez spécifier --no-rebasepour vous assurer que le hook est déclenché ou utiliser le hook de post-réécriture.
Victor Schröder