Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2022-02-04 00:40:18 +0300
committerJunio C Hamano <gitster@pobox.com>2022-02-04 02:39:59 +0300
commit74900a6b3513e0908b1d16df7855e9d478b20b91 (patch)
tree09dfd1820aaf89f34dd5c02842a09472e44988d4 /progress.c
parentaccf1eb1d0f102c6b8f099fa6063216818e45c6b (diff)
progress API: unify stop_progress{,_msg}(), fix trace2 bug
Fix a bug that's been with us ever since 98a13647408 (trace2: log progress time and throughput, 2020-05-12), when the stop_progress_msg() API was used we didn't log a "region_leave" for the "region_enter" we start in "start_progress_delay()". The only user of the "stop_progress_msg()" function is "index-pack". Let's add a previously failing test to check that we have the same number of "region_enter" and "region_leave" events, with "-v" we'll log progress even in the test environment. In addition to that we've had a submarine bug here introduced with 9d81ecb52b5 (progress: add sparse mode to force 100% complete message, 2019-03-21). The "start_sparse_progress()" API would only do the right thing if the progress was ended with "stop_progress()", not "stop_progress_msg()". The only user of that API uses "stop_progress()", but let's still fix that along with the trace2 issue by making "stop_progress()" a trivial wrapper for "stop_progress_msg()". We can also drop the "if (progress)" test from "finish_if_sparse()". It's now a helper for the small "stop_progress_msg()" function. We'll already have returned from it if "progress" is "NULL". Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'progress.c')
-rw-r--r--progress.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/progress.c b/progress.c
index 6cc7f902f5..0cdd875d37 100644
--- a/progress.c
+++ b/progress.c
@@ -311,8 +311,7 @@ struct progress *start_delayed_sparse_progress(const char *title,
static void finish_if_sparse(struct progress *progress)
{
- if (progress &&
- progress->sparse &&
+ if (progress->sparse &&
progress->last_value != progress->total)
display_progress(progress, progress->total);
}
@@ -347,22 +346,6 @@ static void log_trace2(struct progress *progress)
trace2_region_leave("progress", progress->title, the_repository);
}
-void stop_progress(struct progress **p_progress)
-{
- struct progress *progress;
-
- if (!p_progress)
- BUG("don't provide NULL to stop_progress");
- progress = *p_progress;
-
- finish_if_sparse(progress);
-
- if (progress)
- log_trace2(*p_progress);
-
- stop_progress_msg(p_progress, _("done"));
-}
-
void stop_progress_msg(struct progress **p_progress, const char *msg)
{
struct progress *progress;
@@ -375,8 +358,10 @@ void stop_progress_msg(struct progress **p_progress, const char *msg)
return;
*p_progress = NULL;
+ finish_if_sparse(progress);
if (progress->last_value != -1)
force_last_update(progress, msg);
+ log_trace2(progress);
clear_progress_signal();
strbuf_release(&progress->counters_sb);