git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Default ordering of git log output

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 3, 2015, 16:43 UTC
Message-ID
<xmqqk2s7lagq.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<494BA1BD-150F-45A2-BF5D-9A933D9C1344@gmail.com>
Kirill Likhodedov <kirill.likhodedov@gmail.com> writes:
Show 7 quoted lines
> Is it intended behavior that the default git log output (without
> ordering parameters) can show parents before children?
>
> The man says:
>     Commit Ordering
>        By default, the commits are shown in reverse chronological order.
> so it tells nothing about parent-to-child relationship.

When you do not give order and when your traversal is not "limited" (i.e. you do not specify A in "git log A..B" that tells us where the traversal ends in topological sense), the traversal "git log" goes:

 - We put HEAD to a queue that holds commits that are further to be
   processed.
 - We pick up the youngest commit from the queue; we show it, and
   push its parents that haven't been shown to the queue.  We repeat
   this step until the queue runs out items.

Your history, when a project participant uses a broken clock to record the committer timestamp, could look like this (topology flows from left to right):

           1---5---6
          /   /
     2---3---4

where the labels in the illustration depict the relative order of their committer timestamps. Imagine your HEAD is at '6'.

So "git log" would do
    Queue       Action
    6           show 6, push 5 to the queue
    5           show 6, push 1 and 4 to the queue
    4 1         show 4, push 3 to the queue
    3 1         show 3, push 2 to the queue
    2 1         show 2; nothing pushed (as it is root)
    1           show 1; nothing is pushed (as its parent 3 has
                        already been shown)
    -empty-
Previous: Kirill Likhodedov
Message 2 of 2 in “Default ordering of git log output”
  1. Kirill LikhodedovSep 3, 2015
  2. Junio C HamanoSep 3, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.