From 3981c024725c398b5d250f0c91d58d7c20f0179f Mon Sep 17 00:00:00 2001 From: Derrick Stolee Date: Mon, 7 Aug 2023 15:50:22 -0400 Subject: [PATCH] gvfs-helper: show progress of multiple prefetch packs When using a cache server to download multiple prefetch packs, the GVFS Protocol sends all packs in one download. This download is split into multiple files during that single HTTPS request. This also presents a single progress indicator such as Prefetch 1691384600 (2023-08-07 05:03:20 +0000) (bytes received): 25355702, done. After downloading all of these packs to the `tempPacks` directory of the shared object cache, we run `git index-pack` on each packfile individually. The previous change removed the verbose output of `git index-pack`, but that left the time spend indexing the packs without any progress indicator. Add a new progress indicator that ticks through the different prefetch pack-files that are being installed as we go. This presents a new progress indicator that terminates with output like Installing prefetch packfiles: 100% (14/14), done. This helps users understand what is going on without the extra noise of two output lines per `git index-pack` command. Signed-off-by: Derrick Stolee --- gvfs-helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gvfs-helper.c b/gvfs-helper.c index efc55d7a5d84ab..35e7ec5634ee1d 100644 --- a/gvfs-helper.c +++ b/gvfs-helper.c @@ -2345,12 +2345,17 @@ static void install_prefetch(struct gh__request_params *params, trace2_data_intmax(TR2_CAT, NULL, "prefetch/packfile_count", np); + if (gh__cmd_opts.show_progress) + params->progress = start_progress("Installing prefetch packfiles", np); + for (k = 0; k < np; k++) { extract_packfile_from_multipack(params, status, fd, k); + display_progress(params->progress, k + 1); if (status->ec != GH__ERROR_CODE__OK) break; nr_installed++; } + stop_progress(¶ms->progress); if (nr_installed) delete_stale_keep_files(params, status);