22 votes

Pourquoi ne git se soucient de fuite espaces dans mes fichiers?

Quel est-il de ce CV, je suis aide à vous soucier de ce que je mets dans mes fichiers? Je ne comprends pas ce que le point ici est. Est de contrôle de version git ou un vérificateur de syntaxe?

22voto

Brian Campbell Points 101107

C'est parce que l'une des utilisations très communes pour Git est l'envoi de patch de la série par e-mail. Les espaces de fin de semer le trouble dans l'email, et sont ainsi supprimés, ce qui signifie que les espaces de fin sera perdu dans le processus d'envoi de patch via e-mail et de les appliquer. Cela signifie que si il y a des espaces sur les lignes dans les pensions de titres, mais pas dans le patch appliqué, vous pouvez obtenir de fausses conflits, ou des modifications supplémentaires qui n'étaient pas prévu, lors de l'application d'un patch.

Cette pre-commit hook utilisé pour être activé par défaut, mais n'est plus. Il semble que j'ai mal rappelé; il n'a jamais été activé par défaut. Comme d'autres l'ont souligné, cela a toujours été un exemple de pre-commit hook; il utilisé pour être désactivé en ne lui donnant pas le bit d'exécution, mais c'est quelque chose qui peut se faire défoncer assez facilement (par exemple, l'exécution de sous Cygwin sous Windows), donc dans les nouvelles versions de Git (depuis plus d'un an), les échantillons ont été désactivés en étant nommé pre-commit.sample. Vous pouvez supprimer ou déplacer votre .git/hooks/pre-commit pour éviter ce crochet de s'exécuter si vous n'aimez pas le comportement. Vous devez également mettre à jour votre Git quelque chose de plus récent, comme cela a été corrigé depuis un certain temps.

10voto

hobbs Points 71946

Git n'a pas de soins du tout. L' exemple pre-commit hook à un espace de départ d'une démonstration de la façon d'écrire un crochet, mais il n'est pas activé par défaut; vous devez le rendre exécutable pour qu'il fasse quoi que ce soit.

4voto

Jakub Narębski Points 87537

Pourquoi? En raison de fuite espace facilement perdu, fausser les changements et de ne pas appliquer les patchs (parce que des espaces de changement). C'est une question de conformité à la programmation de style.

Qui a dit que c'est une question de pre-commit crochet: vous pouvez le modifier, ou de le désactiver ou configurer de fuite d'espaces (peut-être pour certains types de fichiers uniquement) pour ne pas être considéré comme une erreur.


L' pre-commit crochet doit être désactivé par défaut, mais les anciennes versions (pré 1.6.0) utilisé pour installer éteint par le fait d'avoir positionné désactivée, ce qui pourrait ne pas fonctionner sur la non-UNIX systèmes de fichiers comme FAT; de 1.6.0 ils sont installés désactivé par avoir".exemple de' suffixe ajouté.

3voto

Phil Points 2513

Comme hobbs écrit, l'échantillon de pré-commit hook peut-être faire un chèque pour la fuite d'espace. Pour le désactiver, regarder en .git/hooks et assurez-vous que les fichiers ne sont pas exécutables.

Une voie possible pour que les crochets peuvent avoir obtenu de permis, c'est que le bit d'exécution avez été ensemble si vous étiez en déplacement de vos pensions de autour de sur un format FAT lecteur flash.

0voto

YuriAlbuquerque Points 638

Ce n'est pas une question de VCS essaie de vous dire à quoi bon style de programmation est. C'est une question que les espaces sont une mauvaise chose, car de fuite espace blanc peut être vu comme une inutile de modification par le VCS.

Comment alors?

Imaginez que vous avez une ligne comme ceci:

puts "Hello World"^M^M^M

Où chaque "^M" est une fuite d'espaces (mis là pour simplifier).

Un autre développeur accidentellement changements que cela ressemble à ceci:

puts "Hello World"^M^M

Le VCS va voir cela comme un changement. Un inutile qui n'interfère avec le code, mais plutôt d'un changement. Ce type de changement peut même être relevé par le VCS comme un conflit (qui est quelque chose qui doit être évitée autant que possible). En outre, il pollue votre histoire sans nécessité.

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