Re: [GSoC PATCH v2] backfill: add --[no-]progress option
- From
Derrick Stolee <stolee@gmail.com>
- Date
- Apr 12, 2026, 19:46 UTC
- Message-ID
- <d2cf741c-a381-42a6-9d26-e38481696adb@gmail.com>
- In-Reply-To
- <20260412193659.26288-1-viking4@gmail.com>
On 4/12/26 3:36 PM, Trieu Huynh wrote:
Show 17 quoted lines
> From: Trieu Huynh <vikingtc4@gmail.com> > > '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