teach log --no-walk=unsorted, which avoids sorting
authorMartin von Zweigbergk <martinvonz@gmail.com>
Wed, 29 Aug 2012 06:15:54 +0000 (23:15 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Aug 2012 19:26:50 +0000 (12:26 -0700)
commitca92e59e30b503ff8861b6cd4d431d38738a7ee8
treed253aef4dc21bb77348d3deef3e7982e58454221
parent0ce2e396ee9fb0fa07e8381b338e49859dbf03db
teach log --no-walk=unsorted, which avoids sorting

When 'git log' is passed the --no-walk option, no revision walk takes
place, naturally. Perhaps somewhat surprisingly, however, the provided
revisions still get sorted by commit date. So e.g 'git log --no-walk
HEAD HEAD~1' and 'git log --no-walk HEAD~1 HEAD' give the same result
(unless the two revisions share the commit date, in which case they
will retain the order given on the command line). As the commit that
introduced --no-walk (8e64006 (Teach revision machinery about
--no-walk, 2007-07-24)) points out, the sorting is intentional, to
allow things like

 git log --abbrev-commit --pretty=oneline --decorate --all --no-walk

to show all refs in order by commit date.

But there are also other cases where the sorting is not wanted, such
as

 <command producing revisions in order> |
       git log --oneline --no-walk --stdin

To accomodate both cases, leave the decision of whether or not to sort
up to the caller, by allowing --no-walk={sorted,unsorted}, defaulting
to 'sorted' for backward-compatibility reasons.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/rev-list-options.txt
builtin/log.c
builtin/revert.c
revision.c
revision.h
t/t4202-log.sh