Merge branch 'lp/diffstat-with-graph'
"log --graph" was not very friendly with "--stat" option and its output had line breaks at wrong places. By Lucian Poston (5) and Zbigniew Jędrzejewski-Szmek (2) * lp/diffstat-with-graph: t4052: work around shells unable to set COLUMNS to 1 Prevent graph_width of stat width from falling below min t4052: Test diff-stat output with minimum columns t4052: Adjust --graph --stat output for prefixes Adjust stat width calculations to take --graph output into account Add output_prefix_length to diff_options t4052: test --stat output with --graph
This commit is contained in:
commit
73ff8cf784
8
diff.c
8
diff.c
@ -1509,7 +1509,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (options->stat_width == -1)
|
if (options->stat_width == -1)
|
||||||
width = term_columns();
|
width = term_columns() - options->output_prefix_length;
|
||||||
else
|
else
|
||||||
width = options->stat_width ? options->stat_width : 80;
|
width = options->stat_width ? options->stat_width : 80;
|
||||||
|
|
||||||
@ -1537,8 +1537,12 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
|||||||
* Adjust adjustable widths not to exceed maximum width
|
* Adjust adjustable widths not to exceed maximum width
|
||||||
*/
|
*/
|
||||||
if (name_width + number_width + 6 + graph_width > width) {
|
if (name_width + number_width + 6 + graph_width > width) {
|
||||||
if (graph_width > width * 3/8 - number_width - 6)
|
if (graph_width > width * 3/8 - number_width - 6) {
|
||||||
graph_width = width * 3/8 - number_width - 6;
|
graph_width = width * 3/8 - number_width - 6;
|
||||||
|
if (graph_width < 6)
|
||||||
|
graph_width = 6;
|
||||||
|
}
|
||||||
|
|
||||||
if (options->stat_graph_width &&
|
if (options->stat_graph_width &&
|
||||||
graph_width > options->stat_graph_width)
|
graph_width > options->stat_graph_width)
|
||||||
graph_width = options->stat_graph_width;
|
graph_width = options->stat_graph_width;
|
||||||
|
1
diff.h
1
diff.h
@ -152,6 +152,7 @@ struct diff_options {
|
|||||||
diff_format_fn_t format_callback;
|
diff_format_fn_t format_callback;
|
||||||
void *format_callback_data;
|
void *format_callback_data;
|
||||||
diff_prefix_fn_t output_prefix;
|
diff_prefix_fn_t output_prefix;
|
||||||
|
int output_prefix_length;
|
||||||
void *output_prefix_data;
|
void *output_prefix_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
3
graph.c
3
graph.c
@ -194,8 +194,10 @@ static struct strbuf *diff_output_prefix_callback(struct diff_options *opt, void
|
|||||||
struct git_graph *graph = data;
|
struct git_graph *graph = data;
|
||||||
static struct strbuf msgbuf = STRBUF_INIT;
|
static struct strbuf msgbuf = STRBUF_INIT;
|
||||||
|
|
||||||
|
assert(opt);
|
||||||
assert(graph);
|
assert(graph);
|
||||||
|
|
||||||
|
opt->output_prefix_length = graph->width;
|
||||||
strbuf_reset(&msgbuf);
|
strbuf_reset(&msgbuf);
|
||||||
graph_padding_line(graph, &msgbuf);
|
graph_padding_line(graph, &msgbuf);
|
||||||
return &msgbuf;
|
return &msgbuf;
|
||||||
@ -245,6 +247,7 @@ struct git_graph *graph_init(struct rev_info *opt)
|
|||||||
*/
|
*/
|
||||||
opt->diffopt.output_prefix = diff_output_prefix_callback;
|
opt->diffopt.output_prefix = diff_output_prefix_callback;
|
||||||
opt->diffopt.output_prefix_data = graph;
|
opt->diffopt.output_prefix_data = graph;
|
||||||
|
opt->diffopt.output_prefix_length = 0;
|
||||||
|
|
||||||
return graph;
|
return graph;
|
||||||
}
|
}
|
||||||
|
@ -82,11 +82,15 @@ test_expect_success 'preparation for big change tests' '
|
|||||||
cat >expect80 <<'EOF'
|
cat >expect80 <<'EOF'
|
||||||
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect80-graph <<'EOF'
|
||||||
|
| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
cat >expect200 <<'EOF'
|
cat >expect200 <<'EOF'
|
||||||
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect200-graph <<'EOF'
|
||||||
|
| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
while read verb expect cmd args
|
while read verb expect cmd args
|
||||||
do
|
do
|
||||||
test_expect_success "$cmd $verb COLUMNS (big change)" '
|
test_expect_success "$cmd $verb COLUMNS (big change)" '
|
||||||
@ -94,6 +98,14 @@ do
|
|||||||
grep " | " output >actual &&
|
grep " | " output >actual &&
|
||||||
test_cmp "$expect" actual
|
test_cmp "$expect" actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success "$cmd --graph $verb COLUMNS (big change)" '
|
||||||
|
COLUMNS=200 git $cmd $args --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp "$expect-graph" actual
|
||||||
|
'
|
||||||
done <<\EOF
|
done <<\EOF
|
||||||
ignores expect80 format-patch -1 --stdout
|
ignores expect80 format-patch -1 --stdout
|
||||||
respects expect200 diff HEAD^ HEAD --stat
|
respects expect200 diff HEAD^ HEAD --stat
|
||||||
@ -104,7 +116,9 @@ EOF
|
|||||||
cat >expect40 <<'EOF'
|
cat >expect40 <<'EOF'
|
||||||
abcd | 1000 ++++++++++++++++++++++++++
|
abcd | 1000 ++++++++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect40-graph <<'EOF'
|
||||||
|
| abcd | 1000 ++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
while read verb expect cmd args
|
while read verb expect cmd args
|
||||||
do
|
do
|
||||||
test_expect_success "$cmd $verb not enough COLUMNS (big change)" '
|
test_expect_success "$cmd $verb not enough COLUMNS (big change)" '
|
||||||
@ -113,11 +127,41 @@ do
|
|||||||
test_cmp "$expect" actual
|
test_cmp "$expect" actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success "$cmd --graph $verb not enough COLUMNS (big change)" '
|
||||||
|
COLUMNS=40 git $cmd $args --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp "$expect-graph" actual
|
||||||
|
'
|
||||||
|
done <<\EOF
|
||||||
|
ignores expect80 format-patch -1 --stdout
|
||||||
|
respects expect40 diff HEAD^ HEAD --stat
|
||||||
|
respects expect40 show --stat
|
||||||
|
respects expect40 log -1 --stat
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >expect40 <<'EOF'
|
||||||
|
abcd | 1000 ++++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
|
cat >expect40-graph <<'EOF'
|
||||||
|
| abcd | 1000 ++++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
|
while read verb expect cmd args
|
||||||
|
do
|
||||||
test_expect_success "$cmd $verb statGraphWidth config" '
|
test_expect_success "$cmd $verb statGraphWidth config" '
|
||||||
git -c diff.statGraphWidth=26 $cmd $args >output
|
git -c diff.statGraphWidth=26 $cmd $args >output
|
||||||
grep " | " output >actual &&
|
grep " | " output >actual &&
|
||||||
test_cmp "$expect" actual
|
test_cmp "$expect" actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success "$cmd --graph $verb statGraphWidth config" '
|
||||||
|
git -c diff.statGraphWidth=26 $cmd $args --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp "$expect-graph" actual
|
||||||
|
'
|
||||||
done <<\EOF
|
done <<\EOF
|
||||||
ignores expect80 format-patch -1 --stdout
|
ignores expect80 format-patch -1 --stdout
|
||||||
respects expect40 diff HEAD^ HEAD --stat
|
respects expect40 diff HEAD^ HEAD --stat
|
||||||
@ -129,6 +173,9 @@ EOF
|
|||||||
cat >expect <<'EOF'
|
cat >expect <<'EOF'
|
||||||
abcd | 1000 ++++++++++++++++++++++++++
|
abcd | 1000 ++++++++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect-graph <<'EOF'
|
||||||
|
| abcd | 1000 ++++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
while read cmd args
|
while read cmd args
|
||||||
do
|
do
|
||||||
test_expect_success "$cmd --stat=width with big change" '
|
test_expect_success "$cmd --stat=width with big change" '
|
||||||
@ -143,11 +190,25 @@ do
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "$cmd --stat-graph--width with big change" '
|
test_expect_success "$cmd --stat-graph-width with big change" '
|
||||||
git $cmd $args --stat-graph-width=26 >output
|
git $cmd $args --stat-graph-width=26 >output
|
||||||
grep " | " output >actual &&
|
grep " | " output >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success "$cmd --stat-width=width --graph with big change" '
|
||||||
|
git $cmd $args --stat-width=40 --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp expect-graph actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "$cmd --stat-graph-width --graph with big change" '
|
||||||
|
git $cmd $args --stat-graph-width=26 --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp expect-graph actual
|
||||||
|
'
|
||||||
done <<\EOF
|
done <<\EOF
|
||||||
format-patch -1 --stdout
|
format-patch -1 --stdout
|
||||||
diff HEAD^ HEAD --stat
|
diff HEAD^ HEAD --stat
|
||||||
@ -164,6 +225,9 @@ test_expect_success 'preparation for long filename tests' '
|
|||||||
cat >expect <<'EOF'
|
cat >expect <<'EOF'
|
||||||
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect-graph <<'EOF'
|
||||||
|
| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
|
||||||
|
EOF
|
||||||
while read cmd args
|
while read cmd args
|
||||||
do
|
do
|
||||||
test_expect_success "$cmd --stat=width with big change is more balanced" '
|
test_expect_success "$cmd --stat=width with big change is more balanced" '
|
||||||
@ -171,6 +235,14 @@ do
|
|||||||
grep " | " output >actual &&
|
grep " | " output >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success "$cmd --stat=width --graph with big change is balanced" '
|
||||||
|
git $cmd $args --stat-width=60 --graph >output &&
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp expect-graph actual
|
||||||
|
'
|
||||||
done <<\EOF
|
done <<\EOF
|
||||||
format-patch -1 --stdout
|
format-patch -1 --stdout
|
||||||
diff HEAD^ HEAD --stat
|
diff HEAD^ HEAD --stat
|
||||||
@ -181,9 +253,15 @@ EOF
|
|||||||
cat >expect80 <<'EOF'
|
cat >expect80 <<'EOF'
|
||||||
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect80-graph <<'EOF'
|
||||||
|
| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
|
||||||
|
EOF
|
||||||
cat >expect200 <<'EOF'
|
cat >expect200 <<'EOF'
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
cat >expect200-graph <<'EOF'
|
||||||
|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
EOF
|
||||||
while read verb expect cmd args
|
while read verb expect cmd args
|
||||||
do
|
do
|
||||||
test_expect_success "$cmd $verb COLUMNS (long filename)" '
|
test_expect_success "$cmd $verb COLUMNS (long filename)" '
|
||||||
@ -191,6 +269,14 @@ do
|
|||||||
grep " | " output >actual &&
|
grep " | " output >actual &&
|
||||||
test_cmp "$expect" actual
|
test_cmp "$expect" actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success "$cmd --graph $verb COLUMNS (long filename)" '
|
||||||
|
COLUMNS=200 git $cmd $args --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp "$expect-graph" actual
|
||||||
|
'
|
||||||
done <<\EOF
|
done <<\EOF
|
||||||
ignores expect80 format-patch -1 --stdout
|
ignores expect80 format-patch -1 --stdout
|
||||||
respects expect200 diff HEAD^ HEAD --stat
|
respects expect200 diff HEAD^ HEAD --stat
|
||||||
@ -198,6 +284,36 @@ respects expect200 show --stat
|
|||||||
respects expect200 log -1 --stat
|
respects expect200 log -1 --stat
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
cat >expect1 <<'EOF'
|
||||||
|
...aaaaaaa | 1000 ++++++
|
||||||
|
EOF
|
||||||
|
cat >expect1-graph <<'EOF'
|
||||||
|
| ...aaaaaaa | 1000 ++++++
|
||||||
|
EOF
|
||||||
|
while read verb expect cmd args
|
||||||
|
do
|
||||||
|
test_expect_success COLUMNS_CAN_BE_1 \
|
||||||
|
"$cmd $verb prefix greater than COLUMNS (big change)" '
|
||||||
|
COLUMNS=1 git $cmd $args >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp "$expect" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test "$cmd" != diff || continue
|
||||||
|
|
||||||
|
test_expect_success COLUMNS_CAN_BE_1 \
|
||||||
|
"$cmd --graph $verb prefix greater than COLUMNS (big change)" '
|
||||||
|
COLUMNS=1 git $cmd $args --graph >output
|
||||||
|
grep " | " output >actual &&
|
||||||
|
test_cmp "$expect-graph" actual
|
||||||
|
'
|
||||||
|
done <<\EOF
|
||||||
|
ignores expect80 format-patch -1 --stdout
|
||||||
|
respects expect1 diff HEAD^ HEAD --stat
|
||||||
|
respects expect1 show --stat
|
||||||
|
respects expect1 log -1 --stat
|
||||||
|
EOF
|
||||||
|
|
||||||
cat >expect <<'EOF'
|
cat >expect <<'EOF'
|
||||||
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
EOF
|
EOF
|
||||||
|
Loading…
Reference in New Issue
Block a user