6

変更したファイルに var_dump が存在するかどうかをチェックし、見つかった場合は終了する git pre-commit フックを作成しようとしています (しかし、惨めに失敗しています)。私が抱えている問題は、常にコミットを中止しているように見えることです。これが私のプレコミットファイルの内容です:

VAR=$(git diff | grep -w "var_dump")
if [ -z $VAR ]; then
  echo "You've left a var_dump in one of your files! Aborting commit..."
  exit 1
fi
4

1 に答える 1

11

まず第一に、plaingit diffはコミットしようとしているものではなく、作業ツリーとインデックス (つまり、まだステージングできるもの) の違いを与えることに注意してください。git diff --cached何がコミットされようとしているのかを確認するために使用します。

実験中に遭遇した 2 番目のことは、出力の先頭にあるが Bash によって解釈されたif [ -z $VAR ]ため、直接使用するとエラーが発生したことでした。これを防ぐために、必ず引用符で囲んでください。+git diff$VAR

$VARスクリプトに関しては、空の場合のテストを否定するのを忘れていました。grep からの出力が空の場合、「var_dump」は見つからず、フックは成功を返すはずです。あなたが望むのは、それが空でない場合、つまり「var_dump」見つかった場合であり、コミットを中止する必要があります。

すべて一緒に:

VAR=$(git diff --cached | grep -w "var_dump")
if [ ! -z "$VAR" ]; then
  echo "You've left a var_dump in one of your files! Aborting commit..."
  exit 1
fi 
于 2012-05-31T20:05:44.647 に答える