Currently, when we display a merge whose first parent is already present
in a column to the left of the merge commit, we display the first parent
as a vertical pipe `|` in the GRAPH_POST_MERGE line and then immediately
enter the GRAPH_COLLAPSING state. The first-parent line tracks to the
left and all the other parent lines follow it; this creates a "kink" in
those lines:
| *---.
| |\ \ \
|/ / / /
| | | *
This change tidies the display of such commits such that if the first
parent appears to the left of the merge, we render it as a `/` and the
second parent as a `|`. This reduces the horizontal and vertical space
needed to render the merge, and makes the resulting lines easier to
read.
| *-.
|/|\ \
| | | *
If the first parent is separated from the merge by several columns, a
horizontal line is drawn in a similar manner to how the GRAPH_COLLAPSING
state displays the line.
| | | *-.
| |_|/|\ \
|/| | | | *
This effect is applied to both "normal" two-parent merges, and to
octopus merges. It also reduces the vertical space needed for pre-commit
lines, as the merge occupies one less column than usual.
Before: After:
| * | *
| |\ | |\
| | \ | * \
| | \ |/|\ \
| *-. \
| |\ \ \
Signed-off-by: James Coglan <jcoglan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
@ -147,9 +145,8 @@ test_expect_success 'log --graph with tricky octopus merge and its child, no col
@@ -147,9 +145,8 @@ test_expect_success 'log --graph with tricky octopus merge and its child, no col
cat >expect.uncolored <<-\EOF &&
* left
| * after-merge
| *---. octopus-merge
| |\ \ \
|/ / / /
| *-. octopus-merge
|/|\ \
| | | * 4
| | * | 3
| | |/
@ -169,9 +166,8 @@ test_expect_failure 'log --graph with tricky octopus merge and its child with co
@@ -169,9 +166,8 @@ test_expect_failure 'log --graph with tricky octopus merge and its child with co
@ -11,12 +11,8 @@ test_expect_success 'log --graph with merge fusing with its left and right neigh
@@ -11,12 +11,8 @@ test_expect_success 'log --graph with merge fusing with its left and right neigh
| * G
| |\
| | * F
| | |
| | \
| *-. \ E
| |\ \ \
|/ / / /
| | | /
| * \ E
|/|\ \
| | |/
| | * D
| * | C
@ -40,4 +36,41 @@ test_expect_success 'log --graph with merge fusing with its left and right neigh
@@ -40,4 +36,41 @@ test_expect_success 'log --graph with merge fusing with its left and right neigh
test_cmp expect actual
'
test_expect_success 'log --graph with left-skewed merge' '