2010-06-01 19 views
37

S'il vous plaît pouvez-vous expliquer à propos des erreurs d'espaces dans git, que signifient-ils, qu'est-ce que 'squelching', et dois-je m'inquiéter à ce sujet? (Exécution de msysgit, mais avec d'autres utilisateurs sur Linux).git, les erreurs d'espace, squelching et autocrlf, les réponses définitives

Il existe déjà un « définitif » pour réponse autocrlf here (valeur false git config --global core.autocrlf false )

+0

Et une réponse 'définitive' pour les erreurs d'espacement [ici] (http://stackoverflow.com/questions/12396622/what-does-1-line-adds-whitespace-errors -mean-when-apply-a-patch/12396793 # 12396793). –

Répondre

22

Squelching est d'abord une fonction utilisée dans les télécommunications pour définir un seuil au-dessus duquel un signal est ou non: autorisé par.

Dans votre cas, quand vous voyez:

warning: squelched 104 whitespace errors 
warning: 109 lines add whitespace errors. 

Cela signifie: au lieu d'afficher plus de 100 messages d'erreur, il vous avertit qu'il aurait dû afficher ces erreurs (mais il ne sera pas, afin de ne pas encombrer la sortie)

Je n'ai pas de recommandations définitives pour la politique d'espace, sauf pour identifier pourquoi ils sont introduits en premier lieu.
Si votre éditeur ne convertit pas les caractères eol (fin de ligne) entre Window et Unix, cela signifie qu'il ajoute ou supprime automatiquement des espaces, ce qui n'est pas toujours utile.

Un premier test (comme dans ce blog post) est de désactiver la politique:

git config core.whitespace nowarn 

ou essayez

git config core.whitespace fix 

et voir si cela facilite vos opérations de rebasage.

+0

Donc, quelque chose comme mon éditeur convertissant les onglets en espaces afficherait comme une erreur? (En fait, ce n'était pas une rebase qui m'a donné ce message, c'était ré-appliquer une cachette - cela n'a pas empêché la réapplication, mais je voulais comprendre le message) – Benjol

+1

@Benjol: dans ce cas, le Le message 'squelch' est là pour vous avertir qu'il y aura des problèmes dans les futures fusions (fusionner, rebaser, pousser, tirer) – VonC

+0

I "core.whitespace no warn" n'a pas fonctionné pour moi. Dois-je redémarrer la machine ou le terminal ou quelque chose? – kakyo

12

Après avoir cherché cette réponse aussi bien et regarder à la fois le git-config et git-appliquer les manuels, je trouve que

git config apply.whitespace nowarn 

montrant les erreurs désactive les espaces dans votre référentiel actuel.

Pour le rendre disponible pour tous les dépôts suffit d'ajouter --global comme ceci:

git config --global apply.whitespace nowarn 
+0

'core.whitespace' ne fonctionnait pas pour moi mais' apply.whitespace' fonctionnait. Dans mon cas, l'application d'un diff jetait des avertissements d'espaces blancs 'git apply file.diff'. – amertkara

13

Voici comment corriger les erreurs « fuite des espaces blancs » lors de l'utilisation git apply:

La première chose que vous devez savoir est: ce qui est une erreur d'espace. Ceci est expliqué sur le core.whitespace setting documentation. En gros, gère git plusieurs types d'erreurs blancs:

blank-at-eol 
blank-at-eof 
space-before-tab 
indent-with-non-tab 
tab-in-indent 
cr-at-eol 

erreur de fuite des espaces peut augmenter lorsque patcher une ligne en utilisant le fichier de style Windows fin (CRLF). Pour éviter cet avertissement, vous pouvez demander git apply pour ne pas montrer avertissement:

git apply --whitespace=nowarn fix.patch 

ou vous pouvez modifier la configuration git à la volée (avec -c) dire « git ok, CR à la fin de la ligne sont amende cette fois »:

git -c core.whitespace=cr-at-eol apply fix.patch 

Si vous voulez faire permanente, il suffit d'éditer la configuration git comme ça:

git config apply.whitespace nowarn 

ou:

git config core.whitespace cr-at-eol