2 votes

Pourquoi le crochet pre-receive Git peut-il montrer une modification récente de fichier mais ne pas la différencier?

En essayant d'écrire un crochet pre-receive qui rejette certains types de modifications apportées à certains types de fichiers, je suis bloqué quant à la légalité du script suivant :

git show :

comme celui utilisé dans cet exemple (après avoir identifié les fichiers concernés en utilisant diff avec --name-only), mais pas

git diff   -- 

Je préfère ce dernier afin de rejeter uniquement les modifications introduites plutôt que les motifs déjà présents dans les fichiers, mais il génère l'erreur : "révision inconnue ou chemin non présent dans l'arborescence de travail" lors de son exécution à partir de ce script.

Je soupçonne que cela a à voir avec l'ordre des événements, puisque les deux fonctionnent en ligne de commande sur mon dépôt dépourvu de travail, mais j'aimerais comprendre la distinction.

-3voto

Nevik Rehnel Points 5446

Comme le réponse que vous avez liée le souligne, lorsque le crochet pre-receive est exécuté, aucun fichier n'a encore été reçu, seulement les références qui doivent être mises à jour (des détails sur ce crochet et d'autres peuvent être trouvés sur la page de manuel githooks(5)).

Puisqu'il n'y a pas de donnée avec laquelle vos anciennes données pourraient être comparées, aucune différence ne peut être créée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X