Subject: Re: [GSoC PATCH v2] backfill: add --[no-]progress option

From: Derrick Stolee <[email-masked]>
Date: Sun, 12 Apr 2026 15:46:17 -0400

On 4/12/26 3:36 PM, Trieu Huynh wrote:
> From: Trieu Huynh <[email-masked]>
> 
> 'git backfill' does not show an overall progress bar across
> batches, giving no cross-batch feedback during potentially
> long-running operations on large repositories.  By contrast,
> 'git fetch', 'git gc', and 'git index-pack' all support
> --[no-]progress.
> 
> Add a --[no-]progress option that tracks the total number of
> missing blobs downloaded across all batches, defaulting to
> showing progress when stderr is a terminal (matching the
> behaviour of 'git fetch').
> 
> Add tests to verify that:
>   - progress is shown by default on a TTY
>   - --progress forces output regardless of TTY
>   - --no-progress suppresses output

I think the tests do show an improvement, but we're missing
the interaction with the underlying fetch's progress
indicators. I don't see any mention of how your backfill
progress indicators will work with or against the fetch's
progress from the remote and index-pack steps.

Further, if a user supplies 'git backfill --no-progress'
then they are probably saying "I don't want any progress
indicators" and that would signal also that the fetch should
be quiet. This is perhaps the key detail that makes your
current version unable to move forward. It creates an
implication that it doesn't follow-through on.

One way to go about this is to hide the 'git fetch' output
entirely by passing '--quiet' unconditionally from the
backfill command. But this may also be too much for users
who want to watch the download statistics from the remote.

Perhaps a way to have a robust set that allows all things
to interact is to do the following:

1. Add a --[no-]verbose option that is off by default. The
    implementation sends the --quiet flag to 'git fetch' if
    --verbose isn't provided from the user. This reduces the
    noise for the default user.

2. Add a --[no-]progress option as you've provided here.

The complexity at the end is about what happens when the
user provides both --verbose and --progress, which is the
situation that this patch is currently in. How do the
progress indicators mingle with the verbose fetch output?

Thanks,
-Stolee