Merge branch 'ds/graph-horizontal-edges'

Rendering by "git log --graph" of ancestry lines leading to a merge
commit were made suboptimal to waste vertical space a bit with a
recent update, which has been corrected.

* ds/graph-horizontal-edges:
  graph: fix collapse of multiple edges
  graph: add test to demonstrate horizontal line bug
This commit is contained in:
Junio C Hamano 2020-01-30 14:17:08 -08:00
commit d52adee779
2 changed files with 70 additions and 2 deletions

10
graph.c
View File

@ -1233,8 +1233,14 @@ static void graph_output_collapsing_line(struct git_graph *graph, struct graph_l
* prevent any other edges from moving * prevent any other edges from moving
* horizontally. * horizontally.
*/ */
if (horizontal_edge == -1) if (horizontal_edge == -1) {
horizontal_edge = i; int j;
horizontal_edge_target = target;
horizontal_edge = i - 1;
for (j = (target * 2) + 3; j < (i - 2); j += 2)
graph->mapping[j] = target;
}
} }
} }

View File

@ -311,4 +311,66 @@ test_expect_success 'log --graph with multiple tips and colors' '
test_cmp expect.colors actual.colors test_cmp expect.colors actual.colors
' '
test_expect_success 'log --graph with multiple tips' '
git checkout --orphan 7_1 &&
test_commit 7_A &&
test_commit 7_B &&
test_commit 7_C &&
git checkout -b 7_2 7_1~2 &&
test_commit 7_D &&
test_commit 7_E &&
git checkout -b 7_3 7_1~1 &&
test_commit 7_F &&
test_commit 7_G &&
git checkout -b 7_4 7_2~1 &&
test_commit 7_H &&
git checkout -b 7_5 7_1~2 &&
test_commit 7_I &&
git checkout -b 7_6 7_3~1 &&
test_commit 7_J &&
git checkout -b M_1 7_1 &&
git merge --no-ff 7_2 -m 7_M1 &&
git checkout -b M_3 7_3 &&
git merge --no-ff 7_4 -m 7_M2 &&
git checkout -b M_5 7_5 &&
git merge --no-ff 7_6 -m 7_M3 &&
git checkout -b M_7 7_1 &&
git merge --no-ff 7_2 7_3 -m 7_M4 &&
check_graph M_1 M_3 M_5 M_7 <<-\EOF
* 7_M1
|\
| | * 7_M2
| | |\
| | | * 7_H
| | | | * 7_M3
| | | | |\
| | | | | * 7_J
| | | | * | 7_I
| | | | | | * 7_M4
| |_|_|_|_|/|\
|/| | | | |/ /
| | |_|_|/| /
| |/| | | |/
| | | |_|/|
| | |/| | |
| | * | | | 7_G
| | | |_|/
| | |/| |
| | * | | 7_F
| * | | | 7_E
| | |/ /
| |/| |
| * | | 7_D
| | |/
| |/|
* | | 7_C
| |/
|/|
* | 7_B
|/
* 7_A
EOF
'
test_done test_done