Re: Default ordering of git log output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kirill Likhodedov <kirill.likhodedov@xxxxxxxxx> writes:

> 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-
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]