]> git.ipfire.org Git - thirdparty/git.git/commit
shortlog: use a stable sort
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 14 Jul 2022 15:43:49 +0000 (15:43 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Jul 2022 18:24:11 +0000 (11:24 -0700)
commitdf534dcbaafa74be9e922418712bede75676588b
treee73dbdc8fcd9d8eeb94f56da5fb30caa792cff0a
parentbbea4dcf42b28eb7ce64a6306cdde875ae5d09ca
shortlog: use a stable sort

When sorting the output of `git shortlog` by count, a list of authors in
alphabetical order is then sorted by contribution count. Obviously, the
idea is to maintain the alphabetical order for items with identical
contribution count.

At the moment, this job is performed by `qsort()`. As that function is
not guaranteed to implement a stable sort algorithm, this can lead to
inconsistent and/or surprising behavior: items with identical
contribution count could lose their alphabetical sub-order.

The `qsort()` in MS Visual C's runtime does _not_ implement a stable
sort algorithm, and under certain circumstances this even causes a test
failure in t4201.21 "shortlog can match multiple groups", where two
authors both are listed with 2 contributions, and are listed in inverse
alphabetical order.

Let's instead use the stable sort provided by `git_stable_qsort()` to
avoid this inconsistency.

This is a companion to 2049b8dc65 (diffcore_rename(): use a stable sort,
2019-09-30).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/shortlog.c