Skip to content

Commit

Permalink
gvfs-helper: show progress of multiple prefetch packs
Browse files Browse the repository at this point in the history
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 <derrickstolee@github.com>
  • Loading branch information
derrickstolee committed Aug 7, 2023
1 parent 4c999ac commit 3981c02
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions gvfs-helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -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(&params->progress);

if (nr_installed)
delete_stale_keep_files(params, status);
Expand Down

0 comments on commit 3981c02

Please sign in to comment.