会社でディレクトリが結構階層化されてる git リポジトリをいじってて、grep する時に Makefile.in とかが引っかかるのが邪魔だなぁ、と思いました。

たとえば .o を除外するだけなら grep --exclude='*.o' とでもすればいいですが、同じ .c でもリポジトリにあるものだけ対象にして yacc/lex で .y/.l から自動生成したものは除外したい、とかなると途端に面倒になります。

で、リポジトリに入ってるファイルだけ grep するにはどうしたらいいかなーと思ってググったら、 git grep というそのまんまなサブコマンドがありました。もちろん -E オプションとかも使えます(git egrep サブコマンドは無い模様)。注意点としてはデフォルトで grep -r 相当の動作になるので、ディレクトリを掘らないようにするには --max-depth オプションで制御する必要があるぐらいでしょうか。

Mercurial にも hg grep サブコマンドがあるようです(Mercurial 使ったことないけど)。あと Subversion には同様のものは無いようです、残念。

Trackback

no comment untill now

Add your comment now