2010-12-08 42 views
2

Je suis en train de faire une livraison en Git, mais l'erreur suivante:git commit stands sur les espaces sur les lignes de fuite qui n'existent pas

$ git commit -m "Changed model name from Employee to Person for abstraction" 
* 
* You have some suspicious patch lines: 
* 
* In app/helpers/people_helper.rb 
* trailing whitespace (line 28) 
app/helpers/people_helper.rb:28: 
* trailing whitespace (line 44) 
app/helpers/people_helper.rb:44: 

fin. Je vais supprimer les espaces. Le seul problème? Ces lignes n'existent pas.

$ cat app/helpers/people_helper.rb 
module PeopleHelper 
end 
$ 

Le fichier ne comporte que deux lignes. Il ne peut pas y avoir d'espace blanc sur les lignes 28 et 44.

Ce qui donne?

Je suis sur Git version 1.5.4 sans aucun hook sauf ceux installés par défaut.

+0

Quelle version de git? Avez-vous des hooks actifs? (par exemple, 'git --version' et' ls .git/hooks') –

+0

Merci, Emil - ajouté à la question originale. Git 1.5.4, pas de crochets atypiques. –

+0

Il n'y a pas de hook par défaut. Il y a des échantillons pour les hooks, mais ils sont tous nommés avec une extension '.sample' et ne sont donc pas actifs. Avez-vous des hooks actifs? –

Répondre

1

Git 1.5.4 est une ancienne version de Git (à partir de février 2008); Je vous recommande de mettre à jour vers une version plus récente. Les versions plus récentes (depuis 1.6, je crois) n'activent pas les exemples de hooks par défaut (je crois que les anciennes versions n'étaient pas censées activer les hooks par défaut non plus, mais cela a été fait en désactivant le bit exécutable mis sur certaines plates-formes, maintenant il est fait en les nommant .sample afin que Git ne les regarde même pas jusqu'à ce que vous les renommiez). Notez que si vous mettez à jour tous vos anciens dépôts, vous devrez les désactiver manuellement (renommez tout en .git/hooks pour finir en .sample), ou clonez simplement vos dépôts pour en obtenir de nouveaux. dépôts sans vieilles ordures restantes. En ce qui concerne votre problème exact, je ne suis pas tout à fait sûr sans plus d'informations pourquoi cela se produirait (la sortie de git-diff-index -p -M --cached HEAD aiderait probablement), mais c'est probablement parce que la façon dont le crochet d'échantillon vérifié pour les espaces de fin était en générant un correctif, puis l'analyse du correctif, la recherche des en-têtes pour obtenir le nom du fichier, les numéros de ligne pour déterminer la ligne, les lignes commençant par un espace pour compter les lignes non modifiées et les lignes commençant par +. Si quelque chose parvient à perturber cet analyseur de patch assez simple, il se peut qu'il se termine avec un nom de fichier et un numéro de ligne complètement faux pour les erreurs qu'il signale.

Cette vérification de l'espace blanc de fin n'est même plus incluse dans le crochet de pré-validation de l'échantillon, probablement en raison de sa fragilité.