@mmrobins @AaronM @ErikZ @JamesMishra haben Varianten bereitgestellt, die alle ein gemeinsames Problem haben: Sie fordern Git auf, eine Mischung von Informationen zu produzieren, die nicht für Skriptverbrauch vorgesehen sind, einschließlich Zeileninhalten aus dem Repository in der gleichen Zeile, und dann das Durcheinander mit einem regulären Ausdruck abzugleichen.
Dies ist ein Problem, wenn einige Zeilen kein gültiger UTF-8-Text sind, und auch, wenn einige Zeilen zufällig mit dem regulären Ausdruck übereinstimmen (das ist hier passiert).
Hier ist eine modifizierte Zeile, die diese Probleme nicht hat. Es fordert Git auf, die Daten sauber auf separaten Zeilen auszugeben, was es einfach macht, zuverlässig das zu filtern, was wir wollen:
git ls-files -z | xargs -0n1 git blame -w --line-porcelain | grep -a "^author " | sort -f | uniq -c | sort -n
Sie können nach anderen Zeichenketten suchen, wie author-mail, committer, usw.
Vielleicht sollten Sie zunächst export LC_ALL=C
ausführen (unter der Annahme, dass bash
) um die Bearbeitung auf Byteebene zu erzwingen (was auch zufällig das Filtern von UTF-8-basierten Lokalisierungen enorm beschleunigt).
2 Stimmen
Sie könnten ein bekanntes Tool in Betracht ziehen, das Statistiken für die Entwicklung des Linux-Kernels sammelt, zum Beispiel ist das Repository hier
git://git.lwn.net/gitdm.git
.