Re: [PATCH] fetch, clone: add fetch.blobSizeLimit config
- From
- Alan Braithwaite <alan@braithwaite.dev>
- Date
- Mar 2, 2026, 21:36 UTC
- Message-ID
- <a3e064fe-9f0d-448f-b034-4a95dcd3fe97@app.fastmail.com>
- In-Reply-To
- <xmqq342i12ky.fsf@gitster.g>
Patrick, Peff, Junio — thanks for taking the time to look at this.
Patrick wrote:
> I'm not sure that we should make blob size limiting the > default.
To clarify — this is a user-opt-in config, not a default. You would only get partial clone behavior if you explicitly set fetch.blobSizeLimit in your gitconfig.
Peff wrote:
> We actually can do blob:limit filters with bitmaps. See > 84243da129 (pack-bitmap: implement BLOB_LIMIT filtering, > 2020-02-14).
Good to know. I'm not positive, but my understanding is that this patch only touches client code, and the server sees an identical request to what `git clone --filter=blob:limit=1m` already sends today. If that's correct, anyone can already impose that cost — this patch just makes it easier to opt in.
> All that said, I'd be wary of turning on partial clones like > this by default.
That's fair. I'm not attached to getting this merged — it was more exploratory to start a discussion.
Junio wrote:
> As to this extra variable, it can already be done with > existing remote.*.partialCloneFilter, it seems, so I do not > know why we want to add it.
I may not understand the config as well as you do, but my reading is that remote.*.partialCloneFilter requires a specific remote name and only takes effect on subsequent fetches from an already-registered promisor remote — not the initial clone. You would also need remote.origin.promisor=true set globally, which seems odd. If I'm understanding correctly, there is currently no way to say "all new clones should use a blob size filter" via config alone. But please correct me if I'm wrong.
Separately — is my understanding correct that partial clone with blob:limit works today without server-side changes, assuming uploadpack.allowFilter is enabled? If so, I'm happy to maintain this as a local client patch for my own workflow.
Thanks again, Alan
On Mon, Mar 2, 2026, at 10:57, Junio C Hamano wrote:
Show 19 quoted lines
> Patrick Steinhardt <ps@pks.im> writes: > >> I'm not sure that we should make blob size limiting the default. The >> problem with specifying a limit is that this is comparatively expensive >> to compute on the server side: we have to look up each blob so that we >> can determine its size. Unfortunately, such requests cannot (currently) >> be optimized via for example bitmaps, or any other cache that we have. >> ... >> Another question to consider: is it really sensible to set this setting >> globally? It is very much dependent on the forge that you're connecting >> to, as forges may not even allow object filters at all, or only a subset >> of them. > > Both are good questions, but to affect "clone" you'd need either > "git -c that.variable=setting clone" or have it in ~/.gitconfig no? > > As to this extra variable, it can already be done with existing > remote.*.partialCloneFilter, it seems, so I do not know why we want > to add it.