2

Git でコミットしようとしていますが、次のエラーが表示されます。

$ 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:

罰金。空白を削除します。唯一の問題?それらの行は存在しません。

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

ファイルの長さはわずか 2 行です。28 行目と 44 行目に空白を入れることはできません。

何を与える?

私はGitバージョン1.5.4を使用しており、デフォルトでインストールされているものを除いてフックはありません。

4

1 に答える 1

1

Git 1.5.4 はかなり古いバージョンの Git (2008 年 2 月以降) です。新しいバージョンに更新することをお勧めします。新しいバージョン (1.6 以降だと思います) はデフォルトでサンプル フックを有効にしていません (古いバージョンでもデフォルトでサンプル フックを有効にすることは想定されていなかったと思いますが、実行可能ビットを無効にすることで行われました。特定のプラットフォームで設定します; 今では名前を付けることで行われる.sampleため、名前を変更するまで Git はそれらを調べません)。アップグレードした場合、既存のすべてのリポジトリにはまだ古いフックが残っているため、手動でそれらを無効にする ( のすべての名前を で.git/hooks終わるように変更する.sample) か、リポジトリを新しいリポジトリにクローンして新しいリポジトリを取得する必要があることに注意してください古いがらくたが残りません。

あなたの正確な問題に関しては、なぜそれが起こるのかについての詳細な情報がなければ完全にはわかりませんが (の出力git-diff-index -p -M --cached HEADはおそらく役立つでしょう)、サンプルフックが末尾の空白をチェックする方法がパッチを生成することによるものであった可能性があります。パッチを解析し、差分ヘッダーを探してファイル名を取得し、差分行番号を調べて行を見つけ、スペースで始まる行を数えて変更されていない行を数え、a で始まる行+を探して変更された行を見つけます。何かがこの非常に単純なパッチ パーサーを混乱させた場合、レポートされるエラーのファイル名と行番号が完全に間違ってしまう可能性があります。

この末尾の空白のチェックは、サンプルの pre-commit フックにも含まれなくなりました。

于 2011-04-15T20:57:34.057 に答える