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:
authorJeff King <peff@peff.net>2020-10-07 21:19:23 +0300
committerJunio C Hamano <gitster@pobox.com>2020-10-07 21:50:09 +0300
commitcea69151a4d4c0861a6dd5006267141b04ebbadb (patch)
tree22d82cbcbf58bc82e9ba5805d07ee31be77083aa /builtin/index-pack.c
parentf08cbf60fe11507b5ff722ceae95dfb86ce654ee (diff)
index-pack: restore "resolving deltas" progress meter
Commit f08cbf60fe (index-pack: make quantum of work smaller, 2020-09-08) refactored the main loop in threaded_second_pass(), but also deleted the call to display_progress() at the top of the loop. This means that users typically see no progress at all during the delta resolution phase (and for large repositories, Git appears to hang). This looks like an accident that was unrelated to the intended change of that commit, since we continue to update nr_resolved_deltas in resolve_delta(). Let's restore the call to get that progress back. We'll also add a test that confirms we generate the expected progress. This isn't perfect, as it wouldn't catch a bug where progress was delayed to the end. That was probably possible to trigger when receiving a thin pack, because we'd eventually call display_progress() from fix_unresolved_deltas(), but only once after doing all the work. However, since our test case generates a complete pack, it reliably demonstrates this particular bug and its fix. And we can't do better without making the test racy. Signed-off-by: Jeff King <peff@peff.net> Acked-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/index-pack.c')
-rw-r--r--builtin/index-pack.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 8da4031e72..0f05533902 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -1028,6 +1028,10 @@ static void *threaded_second_pass(void *data)
struct object_entry *child_obj;
struct base_data *child;
+ counter_lock();
+ display_progress(progress, nr_resolved_deltas);
+ counter_unlock();
+
work_lock();
if (list_empty(&work_head)) {
/*