4

メイン リポジトリに 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。これを回避するためのきれいな方法は考えられません。

4

1 に答える 1