メイン リポジトリに 2 つのサブモジュールがあり、メイン リポジトリのコードと密接に結合されています。git grep を実行するときに、これら 2 つの特定のサブモジュールと一緒にメイン リポジトリを grep したいほどです。非常に大きな他のサブモジュールがあり、それらのサブモジュールをgrepすると、それぞれに最大15〜20秒かかる可能性があるため、完全なgitサブモジュールを実行できません foreach "git grep ... || true"。
したがって、git submodule foreach よりも具体的なソリューションが必要です。これにより、特定のサブモジュールを指定して、メイン リポジトリを grep することができます。
foo
私の2つのサブモジュールはsubmodules/bar
これが私の現在の解決策です。これによりgit gpx -i something.*interesting
、などと言うことができます。私はまだ git エイリアスを作成するのが初めてなので、このソリューションが改善されることを願っています。
[alias]
inr = "!f() { cd $1 && $2 ;}; f"
gprs = "!f() { for r in $1; do git inr $r \"git grep $2\" | perl -pe \"s|^|$r/|\"; done ;}; f"
gpx = "!f() { git grep $*; git gprs 'foo submodules/bar' \"$*\" ;}; f"
git gpx -i "foo bar"
編集:私が発見した1つの問題は、正規表現の周りの引用符を失うことです。そのため、this: のようなものを呼び出すことができませんgit grep -i foo bar
。これを回避するためのきれいな方法は考えられません。