En supposant que nous ayons du linter dans notre projet. J'ai un hook pré-commit qui lint mon projet et si lint passe sans erreur, il sera validé. Je souhaite configurer un crochet pré-poussé pour pelucher mon projet lors de la poussée. Mais je ne vois pas l'intérêt de le faire en push puisque le code sera déjà linté lors du commit. Alors, quelqu'un peut-il m'indiquer un scénario où une charpie pré-push serait nécessaire avec déjà un lien pré-commit?
3 Réponses :
Si vous utilisez un hook pre-commit
, vous n'avez pas besoin d'un hook pre-push
également. Les deux couvriront le même ensemble de commits en utilisation normale. Les deux peuvent également être contournés avec --no-verify
, donc ni l'un ni l'autre n'est approprié comme contrôle d'accès. Un hook pre-commit
peut néanmoins être un outil utile pour les développeurs qui souhaitent en utiliser un.
Si vous souhaitez appliquer le linting sur votre base de code, vous devez utiliser une vérification dans votre système CI, que les utilisateurs ne peuvent pas modifier. Cela laisse le hook pre-commit
pour les utilisateurs qui le trouvent utile, et les utilisateurs plus avancés, qui peuvent créer de nombreux commits jetables qu'ils ne veulent pas pelucher, peuvent l'ignorer et compter sur CI. p>
S'il s'agit du même ensemble de vérifications, je conviens qu'il n'y a aucune raison d'avoir à la fois pre-commit
et pre-push
cependant, s'il s'agit de vérifications différentes (ce que je suggère généralement de ne conserver que les vérifications les plus rapides dans pre-commit
et les vérifications plus lentes dans pre-push
), alors il y a une raison pour utiliser les deux crochets.
Un exemple pourrait être quelque chose de rapide comme une vérification de syntaxe dans pre-commit
et une exécution de tests unitaires dans pre-push
Disons que vous lintrez votre code sur les deux hooks. En supposant que votre branche utilise le crochet pré-comit et qu'elle soit peluchée. Et il y a une autre branche qui n'est pas peluchée. Ensuite, vous rebasez votre branche de la branche illimitée et avez voulu pousser. À ce stade, le crochet de pré-poussée vous empêchera de pousser à moins que vous ne résolviez ces problèmes de peluches. Il en va de même pour la fusion d'une branche non imprimée avec votre branche et tente de pousser.