3dc95e09e1
In addition to generating a shortlog based on committer, author, or the identity in one or more specified trailers, it can be useful to generate a shortlog based on an arbitrary commit format. This can be used, for example, to generate a distribution of commit activity over time, like so: $ git shortlog --group='%cd' --date='format:%Y-%m' -s v2.37.0.. 117 2022-06 274 2022-07 324 2022-08 263 2022-09 7 2022-10 Arbitrary commit formats can be used. In fact, `git shortlog`'s default behavior (to count by commit authors) can be emulated as follows: $ git shortlog --group='%aN <%aE>' ... and future patches will make the default behavior (as well as `--committer`, and `--group=trailer:<trailer>`) special cases of the more flexible `--group` option. Note also that the SHORTLOG_GROUP_FORMAT enum value is used only to designate that `--group:<format>` is in use when in stdin mode to declare that the combination is invalid. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
131 lines
4.3 KiB
Plaintext
131 lines
4.3 KiB
Plaintext
git-shortlog(1)
|
|
===============
|
|
|
|
NAME
|
|
----
|
|
git-shortlog - Summarize 'git log' output
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git shortlog' [<options>] [<revision-range>] [[--] <path>...]
|
|
git log --pretty=short | 'git shortlog' [<options>]
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
Summarizes 'git log' output in a format suitable for inclusion
|
|
in release announcements. Each commit will be grouped by author and title.
|
|
|
|
Additionally, "[PATCH]" will be stripped from the commit description.
|
|
|
|
If no revisions are passed on the command line and either standard input
|
|
is not a terminal or there is no current branch, 'git shortlog' will
|
|
output a summary of the log read from standard input, without
|
|
reference to the current repository.
|
|
|
|
OPTIONS
|
|
-------
|
|
|
|
-n::
|
|
--numbered::
|
|
Sort output according to the number of commits per author instead
|
|
of author alphabetic order.
|
|
|
|
-s::
|
|
--summary::
|
|
Suppress commit description and provide a commit count summary only.
|
|
|
|
-e::
|
|
--email::
|
|
Show the email address of each author.
|
|
|
|
--format[=<format>]::
|
|
Instead of the commit subject, use some other information to
|
|
describe each commit. '<format>' can be any string accepted
|
|
by the `--format` option of 'git log', such as '* [%h] %s'.
|
|
(See the "PRETTY FORMATS" section of linkgit:git-log[1].)
|
|
|
|
Each pretty-printed commit will be rewrapped before it is shown.
|
|
|
|
--date=<format>::
|
|
Show dates formatted according to the given date string. (See
|
|
the `--date` option in the "Commit Formatting" section of
|
|
linkgit:git-log[1]). Useful with `--group=format:<format>`.
|
|
|
|
--group=<type>::
|
|
Group commits based on `<type>`. If no `--group` option is
|
|
specified, the default is `author`. `<type>` is one of:
|
|
+
|
|
--
|
|
- `author`, commits are grouped by author
|
|
- `committer`, commits are grouped by committer (the same as `-c`)
|
|
- `trailer:<field>`, the `<field>` is interpreted as a case-insensitive
|
|
commit message trailer (see linkgit:git-interpret-trailers[1]). For
|
|
example, if your project uses `Reviewed-by` trailers, you might want
|
|
to see who has been reviewing with
|
|
`git shortlog -ns --group=trailer:reviewed-by`.
|
|
- `format:<format>`, any string accepted by the `--format` option of
|
|
'git log'. (See the "PRETTY FORMATS" section of
|
|
linkgit:git-log[1].)
|
|
+
|
|
Note that commits that do not include the trailer will not be counted.
|
|
Likewise, commits with multiple trailers (e.g., multiple signoffs) may
|
|
be counted more than once (but only once per unique trailer value in
|
|
that commit).
|
|
+
|
|
Shortlog will attempt to parse each trailer value as a `name <email>`
|
|
identity. If successful, the mailmap is applied and the email is omitted
|
|
unless the `--email` option is specified. If the value cannot be parsed
|
|
as an identity, it will be taken literally and completely.
|
|
--
|
|
+
|
|
If `--group` is specified multiple times, commits are counted under each
|
|
value (but again, only once per unique value in that commit). For
|
|
example, `git shortlog --group=author --group=trailer:co-authored-by`
|
|
counts both authors and co-authors.
|
|
|
|
-c::
|
|
--committer::
|
|
This is an alias for `--group=committer`.
|
|
|
|
-w[<width>[,<indent1>[,<indent2>]]]::
|
|
Linewrap the output by wrapping each line at `width`. The first
|
|
line of each entry is indented by `indent1` spaces, and the second
|
|
and subsequent lines are indented by `indent2` spaces. `width`,
|
|
`indent1`, and `indent2` default to 76, 6 and 9 respectively.
|
|
+
|
|
If width is `0` (zero) then indent the lines of the output without wrapping
|
|
them.
|
|
|
|
<revision-range>::
|
|
Show only commits in the specified revision range. When no
|
|
<revision-range> is specified, it defaults to `HEAD` (i.e. the
|
|
whole history leading to the current commit). `origin..HEAD`
|
|
specifies all the commits reachable from the current commit
|
|
(i.e. `HEAD`), but not from `origin`. For a complete list of
|
|
ways to spell <revision-range>, see the "Specifying Ranges"
|
|
section of linkgit:gitrevisions[7].
|
|
|
|
[--] <path>...::
|
|
Consider only commits that are enough to explain how the files
|
|
that match the specified paths came to be.
|
|
+
|
|
Paths may need to be prefixed with `--` to separate them from
|
|
options or the revision range, when confusion arises.
|
|
|
|
:git-shortlog: 1
|
|
include::rev-list-options.txt[]
|
|
|
|
MAPPING AUTHORS
|
|
---------------
|
|
|
|
See linkgit:gitmailmap[5].
|
|
|
|
Note that if `git shortlog` is run outside of a repository (to process
|
|
log contents on standard input), it will look for a `.mailmap` file in
|
|
the current directory.
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|