の出力を解析してみることができますgit-blame
。このコマンドは、ファイルの各行を最後に編集した人に与えます。
この例はあなたが望むものではありませんが、私はそれがあなたにアイデアを与えると思います:
git blame -e the/file | awk -F '<|>' '{print $2}' | sort | uniq -c
これにより、作成者の電子メールアドレスと、ファイルに対して最後に変更した行数が出力されます。次に例を示します。
47 foo@bar.com
34712 blah@baz.com
リポジトリ全体で実行するには、次のようにします。
git ls-files | while read f; do git blame -e $f; done | awk -F '<|>' '{print $2}' | sort | uniq -c
ここでの考え方は、最初にgit ls-filesを使用してファイルのリストを生成し、次に各ファイルで上記のスニペットを実行することです(ここで説明したスニペットを使用)。これを大規模なコードベースで実行している場合は、パイプを使用するのではなく、中間結果を一時ファイルに保存することをお勧めします。