11

各著者の行ごとの貢献を Git リポジトリに出力しようとしています。

そのために、Git リポジトリで特定の作成者によって変更された合計行数をカウントする方法から変更された次のコマンドを使用します。

git ls-tree -r -z --name-only HEAD -- */*.c | xargs -0 -n1 git blame \
--line-porcelain HEAD |grep  "^author "|sort|uniq -c|sort -nr

ただし、次のエラーが表示されます。

fatal: cannot stat path 'HEAD': No such file or directory.

私は何を間違っていますか?

4

2 に答える 2

10

さて、さらに調査した結果、SOでこれを見つけました。

git ls-files -z | xargs -0n1 git blame -w | perl -n -e '/^.*?\((.*?)\s+[\d]{4}/; print $1,"\n"' | sort -f | uniq -c | sort -n  

その答えは、Eric Zのサポートによってもたらされました。

結果

    234926 USER 1
     32453 USER 2
   2941234 USER 3
于 2014-08-25T07:29:14.557 に答える
1

これは、式の最初の部分で結果が得られないことを意味します。試す

git ls-tree -r -z --name-only HEAD -- */*.c

後半なし; おそらく、空の出力が得られます。その式を修正して、作業したいファイルをリストします... .c ファイルを含まないリポジトリでそれを使用する場合。あなたと同じエラーが発生します。オプションを削除する*/*.cか、修正して*/*.cpp修正します(希望する結果に応じて)

于 2014-08-22T14:29:06.573 に答える