Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gvfs-helper: simplify progress output during prefetch #594

Merged

Conversation

derrickstolee
Copy link
Collaborator

  • This change only applies to interactions with Azure DevOps and the
    GVFS Protocol.

A user reported confusion when presented with the progress indicators for several git index-pack subprocesses during a prefetch. This happened by surprise, and is related to our issues with GVFS Cache Servers rejecting credentials and thus halting background maintenance until a foreground fetch happens.

In the meantime, we can modify our progress output to be simpler in this case. There are two changes:

  1. We unconditionally stifle output from git index-pack. It would be preferrable to pass a -q parameter, but it is not available. This prevents two progress indicators per prefetch packfile.
  2. We add a conditional Installing prefetch packfiles: ..% (X/Y) indicator in the loop that installs these packfiles via git index-pack. This shows progress feedback frequently enough that users know something is happening without overwhelming their terminal interface.

If we are showing progress, then we should do so only for how many
prefetch packs are being downloaded. Stop sending the '-v' option to
'git index-pack' which creates too much noise.

Signed-off-by: Derrick Stolee <derrickstolee@github.com>
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>
@derrickstolee derrickstolee merged commit 228b538 into microsoft:vfs-2.41.0.3 Aug 8, 2023
dscho pushed a commit that referenced this pull request Aug 8, 2023
* [x] This change only applies to interactions with Azure DevOps and the
      GVFS Protocol.

A user reported confusion when presented with the progress indicators
for several `git index-pack` subprocesses during a prefetch. This
happened by surprise, and is related to our issues with GVFS Cache
Servers rejecting credentials and thus halting background maintenance
until a foreground fetch happens.

In the meantime, we can modify our progress output to be simpler in this
case. There are two changes:

1. We unconditionally stifle output from `git index-pack`. It would be
preferrable to pass a `-q` parameter, but it is not available. This
prevents two progress indicators per prefetch packfile.
2. We add a conditional `Installing prefetch packfiles: ..% (X/Y)`
indicator in the loop that installs these packfiles via `git
index-pack`. This shows progress feedback frequently enough that users
know something is happening without overwhelming their terminal
interface.
dscho pushed a commit that referenced this pull request Aug 8, 2023
* [x] This change only applies to interactions with Azure DevOps and the
      GVFS Protocol.

A user reported confusion when presented with the progress indicators
for several `git index-pack` subprocesses during a prefetch. This
happened by surprise, and is related to our issues with GVFS Cache
Servers rejecting credentials and thus halting background maintenance
until a foreground fetch happens.

In the meantime, we can modify our progress output to be simpler in this
case. There are two changes:

1. We unconditionally stifle output from `git index-pack`. It would be
preferrable to pass a `-q` parameter, but it is not available. This
prevents two progress indicators per prefetch packfile.
2. We add a conditional `Installing prefetch packfiles: ..% (X/Y)`
indicator in the loop that installs these packfiles via `git
index-pack`. This shows progress feedback frequently enough that users
know something is happening without overwhelming their terminal
interface.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants