blame: report correct number of lines in progress when using ranges
When using ranges, use the range sizes as the limit for progress instead of the size of the full file. Before: $ git blame --progress builtin/blame.c > /dev/null Blaming lines: 100% (1210/1210), done. $ git blame --progress -L 100,120 -L 200,300 builtin/blame.c > /dev/null Blaming lines: 10% (122/1210), done. $ After: $ ./git blame --progress builtin/blame.c > /dev/null Blaming lines: 100% (1210/1210), done. $ ./git blame --progress -L 100,120 -L 200,300 builtin/blame.c > /dev/null Blaming lines: 100% (122/122), done. $ Signed-off-by: Edmundo Carmona Antoranz <eantoranz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
4c53a8c20f
commit
e5f5d7d42e
@ -897,6 +897,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
|
||||
unsigned int range_i;
|
||||
long anchor;
|
||||
const int hexsz = the_hash_algo->hexsz;
|
||||
long num_lines = 0;
|
||||
|
||||
setup_default_color_by_age();
|
||||
git_config(git_blame_config, &output_option);
|
||||
@ -1127,7 +1128,10 @@ parse_done:
|
||||
for (range_i = ranges.nr; range_i > 0; --range_i) {
|
||||
const struct range *r = &ranges.ranges[range_i - 1];
|
||||
ent = blame_entry_prepend(ent, r->start, r->end, o);
|
||||
num_lines += (r->end - r->start);
|
||||
}
|
||||
if (!num_lines)
|
||||
num_lines = sb.num_lines;
|
||||
|
||||
o->suspects = ent;
|
||||
prio_queue_put(&sb.commits, o->commit);
|
||||
@ -1156,7 +1160,7 @@ parse_done:
|
||||
sb.found_guilty_entry = &found_guilty_entry;
|
||||
sb.found_guilty_entry_data = π
|
||||
if (show_progress)
|
||||
pi.progress = start_delayed_progress(_("Blaming lines"), sb.num_lines);
|
||||
pi.progress = start_delayed_progress(_("Blaming lines"), num_lines);
|
||||
|
||||
assign_blame(&sb, opt);
|
||||
|
||||
|
@ -56,6 +56,10 @@ check_count () {
|
||||
' "$@" <actual
|
||||
}
|
||||
|
||||
get_progress_result () {
|
||||
tr '\015' '\012' | tail -n 1
|
||||
}
|
||||
|
||||
test_expect_success 'setup A lines' '
|
||||
echo "1A quick brown fox jumps over the" >file &&
|
||||
echo "lazy dog" >>file &&
|
||||
@ -604,3 +608,39 @@ test_expect_success 'blame -L X,-N (non-numeric N)' '
|
||||
test_expect_success 'blame -L ,^/RE/' '
|
||||
test_must_fail $PROG -L1,^/99/ file
|
||||
'
|
||||
|
||||
test_expect_success 'blame progress on a full file' '
|
||||
cat >expect <<-\EOF &&
|
||||
Blaming lines: 100% (10/10), done.
|
||||
EOF
|
||||
|
||||
GIT_PROGRESS_DELAY=0 \
|
||||
git blame --progress hello.c 2>stderr &&
|
||||
|
||||
get_progress_result <stderr >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'blame progress on a single range' '
|
||||
cat >expect <<-\EOF &&
|
||||
Blaming lines: 100% (4/4), done.
|
||||
EOF
|
||||
|
||||
GIT_PROGRESS_DELAY=0 \
|
||||
git blame --progress -L 3,6 hello.c 2>stderr &&
|
||||
|
||||
get_progress_result <stderr >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'blame progress on multiple ranges' '
|
||||
cat >expect <<-\EOF &&
|
||||
Blaming lines: 100% (7/7), done.
|
||||
EOF
|
||||
|
||||
GIT_PROGRESS_DELAY=0 \
|
||||
git blame --progress -L 3,6 -L 8,10 hello.c 2>stderr &&
|
||||
|
||||
get_progress_result <stderr >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
Loading…
Reference in New Issue
Block a user