Kirill Likhodedov <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html