threads / discuss / 32019

git log --graph --oneline - false parent-child visualization

Subject: git log --graph --oneline - false parent-child visualization

## tl;dr

2 messages between Nov 5, 2012 and Nov 5, 2012.

replies: 1people: 2as markdown or json

martyone· Nov 5, 2012, 12:57 UTC · lore
Hello,

the combination of --graph and --oneline sometimes produces output which is -- at least for me -- not clear about parent-child relation between commits. I noticed it when using with --simplify-by-decoration switch but it should not be specific to the use of this switch.

See this example output (git version 1.7.11.3)
| | | * eead15f (origin/branchA) Lorem ipsum dolor sit amet
| |_|/
|/| |
| | | * 8da3b9f (origin/branchB) Consectetur adipisicing elit
| | |/
| | | * c4d6b9a (origin/branchC) Sed do eiusmod tempor incididunt ut labore
| | | * d623246 (origin/branchD) Ut enim ad minim veniam
| | |/
| | | * 458d305 (origin/btanchE) Quis nostrud exercitation ullamco laboris
| | |/

Here it seems commit c4d6b9a is based on d623246. But when the format is more-than-oneline (or when checked with gitk), it is clear there is no relation between commits c4d6b9a and d623246.

| | | * commit eead15f (origin/branchA)
| |_|/  Author: John Doe <john.doe@example.net>
|/| |
| | |       Lorem ipsum dolor sit amet
| | |
| | | * commit 8da3b9f (origin/branchB)
| | |/  Author: John Doe <john.doe@example.net>
| | |
| | |       Consectetur adipisicing elit
| | |
| | | * commit c4d6b9a (origin/branchC)
| | |   Author: John Doe <john.doe@example.net>
| | |
| | |       Sed do eiusmod tempor incididunt ut labore
| | |
| | | * commit d623246 (origin/branchD)
| | |/  Author: John Doe <john.doe@example.net>
| | |
| | |       Ut enim ad minim veniam
| | |
| | | * commit 458d305 (origin/branchE)
| | |/  Author: John Doe <john.doe@example.net>
| | |
| | |       Quis nostrud exercitation ullamco laboris
| | |

Correct output produced with --oneline switch should output an extra newline when commit has no parent listed:

| | | * eead15f (origin/branchA) Lorem ipsum dolor sit amet
| |_|/
|/| |
| | | * 8da3b9f (origin/branchB) Consectetur adipisicing elit
| | |/
| | | * c4d6b9a (origin/branchC) Sed do eiusmod tempor incididunt ut labore
| | |
| | | * d623246 (origin/branchD) Ut enim ad minim veniam
| | |/
| | | * 458d305 (origin/btanchE) Quis nostrud exercitation ullamco laboris
| | |/

Best Regards, Martin

Michael J Gruber· Nov 5, 2012, 14:17 UTC · re: martyone · lore

Re: git log --graph --oneline - false parent-child visualization

martyone venit, vidit, dixit 05.11.2012 13:57:
Show 68 quoted lines
> Hello,
> 
> the combination of --graph and --oneline sometimes produces output
> which is -- at least for me -- not clear about parent-child relation
> between commits. I noticed it when using with --simplify-by-decoration
> switch but it should not be specific to the use of this switch.
> 
> See this example output (git version 1.7.11.3)
> 
> | | | * eead15f (origin/branchA) Lorem ipsum dolor sit amet
> | |_|/
> |/| |
> | | | * 8da3b9f (origin/branchB) Consectetur adipisicing elit
> | | |/
> | | | * c4d6b9a (origin/branchC) Sed do eiusmod tempor incididunt ut labore
> | | | * d623246 (origin/branchD) Ut enim ad minim veniam
> | | |/
> | | | * 458d305 (origin/btanchE) Quis nostrud exercitation ullamco laboris
> | | |/
> 
> Here it seems commit c4d6b9a is based on d623246. But when the format
> is more-than-oneline (or when checked with gitk), it is clear there is
> no relation between commits c4d6b9a and d623246.
> 
> | | | * commit eead15f (origin/branchA)
> | |_|/  Author: John Doe <john.doe@example.net>
> |/| |
> | | |       Lorem ipsum dolor sit amet
> | | |
> | | | * commit 8da3b9f (origin/branchB)
> | | |/  Author: John Doe <john.doe@example.net>
> | | |
> | | |       Consectetur adipisicing elit
> | | |
> | | | * commit c4d6b9a (origin/branchC)
> | | |   Author: John Doe <john.doe@example.net>
> | | |
> | | |       Sed do eiusmod tempor incididunt ut labore
> | | |
> | | | * commit d623246 (origin/branchD)
> | | |/  Author: John Doe <john.doe@example.net>
> | | |
> | | |       Ut enim ad minim veniam
> | | |
> | | | * commit 458d305 (origin/branchE)
> | | |/  Author: John Doe <john.doe@example.net>
> | | |
> | | |       Quis nostrud exercitation ullamco laboris
> | | |
> 
> Correct output produced with --oneline switch should output an extra
> newline when commit has no parent listed:
> 
> | | | * eead15f (origin/branchA) Lorem ipsum dolor sit amet
> | |_|/
> |/| |
> | | | * 8da3b9f (origin/branchB) Consectetur adipisicing elit
> | | |/
> | | | * c4d6b9a (origin/branchC) Sed do eiusmod tempor incididunt ut labore
> | | |
> | | | * d623246 (origin/branchD) Ut enim ad minim veniam
> | | |/
> | | | * 458d305 (origin/btanchE) Quis nostrud exercitation ullamco laboris
> | | |/
> 
> Best Regards,
> Martin
> 

Yes, you have the same problem when you simply have two disjoint branches: They're listed "concatenated". The problem is that log --graph uses the single symbol "*" for many different cases, independent of the number of ingoing or outgoing lines. There are two solutions:

- use more spacing
- use more symbols (like tig does) and stay compact
Feel free to experiment ;)
Michael

← back to recent threads