git shortlog
allein beantwortet nicht die ursprüngliche Frage nach der Gesamtzahl der Übertragungen (nicht nach Autor gruppiert)
Das ist richtig, und git rev-list HEAD --count bleibt die einfachste Antwort.
Mit Git 2.29 (Q4 2020) wird jedoch " git shortlog
" ( man ) hat sich präzisiert.
Es wurde gelehrt, dass gruppiert Übertragungen nach dem Inhalt der Trailer-Zeilen , wie " Reviewed-by:
", " Coauthored-by:
", usw.
Siehe festlegen 63d24fa , Übergabe 56d5dde , commit 87abb96 , Übergabe f17b0b9 , 47beb37 festlegen , Übergabe f0939a0 , Commit 92338c4 (27. September 2020), und 45d93eb übertragen (25. September 2020) von Jeff King ( peff
) .
(Zusammengefasst von Junio C. Hamano -- gitster
-- sur Übergabe 2fa8aac , 04. Oktober 2020)
shortlog
: mehrere Gruppen können angegeben werden
Abgezeichnet von: Jeff King
Nun, da shortlog
das Lesen von Anhängern unterstützt, kann es nützlich sein, Zählungen von mehreren Anhängern oder zwischen Anhängern und Autoren zu kombinieren.
Dies kann manuell durch Nachbearbeitung der Ausgabe von mehreren Durchläufen geschehen, aber es ist nicht trivial, sicherzustellen, dass jedes Name/Commit-Paar nur einmal gezählt wird.
Dieser Patch bringt shortlog bei, dass es mehrere --group
Optionen in der Befehlszeile und ziehen Sie Daten aus allen diesen Optionen.
Das macht es möglich zu laufen:
git shortlog -ns --group=author --group=trailer:co-authored-by
um ein Kurzprotokoll zu erhalten, das Autoren und Mitautoren gleichermaßen zählt.
Die Umsetzung ist größtenteils unproblematisch. Die " group
Die Aufzählung "enum" wird zu einem Bitfeld, und der Schlüssel des Anhängers wird zu einer Liste.
Ich habe mir nicht die Mühe gemacht, die Multi-Gruppen-Semantik für das Lesen von stdin zu implementieren. Es wäre möglich, zu tun, aber die bestehenden passenden Code macht es umständlich, und ich bezweifle, jemand kümmert.
Die Unterdrückung von Duplikaten, die wir für Trailer verwendet haben, deckt nun auch Autoren und Committer ab (obwohl wir im Einzelgruppenmodus ohne Trailer das Einfügen und Nachschlagen von Hashs überspringen können, da wir nur einen Wert pro Commit sehen).
Es gibt eine kleine Besonderheit: Wir kümmern uns jetzt um den Fall, dass kein Gruppenbit gesetzt ist (in diesem Fall zeigen wir standardmäßig den Autor an).
Der Anrufer in builtin/log.c
muss so angepasst werden, dass ausdrücklich nach den Autoren gefragt wird, anstatt sich auf die shortlog_init()
. Es wäre möglich, dies mit ein paar Tricks zu erreichen, aber für einen einzelnen Anrufer ist es das nicht wert.
git shortlog
umfasst nun in seinem Manpage :
--group=<type>
Gruppieren Sie Commits basierend auf <type>
. Wenn keine --group
Option ist angegeben, ist der Standardwert author
. <type>
ist einer von:
author
Übertragungen werden nach Autor gruppiert.
committer
werden Commits nach Committer gruppiert (genau wie bei -c
)
Dies ist ein Alias für --group=committer
.
git shortlog
umfasst nun auch in seinem Manpage :
Si --group
mehrfach angegeben wird, werden die Übertragungen unter jedem Wert gezählt (aber wiederum nur einmal pro eindeutigem Wert in dieser Übertragung). Für Beispiel, git shortlog --group=author --group=trailer:co-authored-by
zählt sowohl Autoren als auch Mitautoren.
2 Stimmen
Vielleicht finden Sie hier interessante Antworten: Was ist das Git-Äquivalent für die Revisionsnummer?
249 Stimmen
git rev-list HEAD --count
Git-Rev-Liste19 Stimmen
@jberger: Ich denke, Ihr Kommentar sollte in eine Antwort umgewandelt werden.
1 Stimmen
@utapyngo: Angesichts der 13 anderen Antworten wusste ich, dass es begraben werden würde. Ich habe hier veröffentlicht dann.
0 Stimmen
@jberger, diese Antwort funktioniert nicht für git1.7.0.