1月
02
会社でディレクトリが結構階層化されてる 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 には同様のものは無いようです、残念。
no comment untill now