git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] fetch, clone: add fetch.blobSizeLimit config

From
ABAlan 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.
Previous: Junio C HamanoNext: Patrick Steinhardt
Message 5 of 30 in “fetch, clone: add fetch.blobSizeLimit config”
  1. fetch, clone: add fetch.blobSizeLimit configAlan Braithwaite via GitGitGadget, Mar 1, 2026
  2. Patrick SteinhardtMar 2, 2026
  3. Jeff KingMar 2, 2026
  4. Junio C HamanoMar 2, 2026
  5. Alan BraithwaiteMar 2, 2026
  6. Patrick SteinhardtMar 3, 2026
  7. Alan BraithwaiteMar 3, 2026
  8. Patrick SteinhardtMar 3, 2026
  9. Junio C HamanoMar 3, 2026
  10. Patrick SteinhardtMar 4, 2026
  11. Junio C HamanoMar 3, 2026
  12. Jeff KingMar 3, 2026
  13. clone: add clone.<url>.defaultObjectFilter configAlan Braithwaite via GitGitGadget, Mar 5, 2026
  14. Junio C HamanoMar 5, 2026
  15. Alan BraithwaiteMar 5, 2026
  16. clone: add clone.<url>.defaultObjectFilter configAlan Braithwaite via GitGitGadget, Mar 6, 2026
  17. brian m. carlsonMar 6, 2026
  18. Junio C HamanoMar 6, 2026
  19. Alan BraithwaiteMar 6, 2026
  20. clone: add clone.<url>.defaultObjectFilter configAlan Braithwaite via GitGitGadget, Mar 6, 2026
  21. Junio C HamanoMar 6, 2026
  22. Alan BraithwaiteMar 7, 2026
  23. clone: add clone.<url>.defaultObjectFilter configAlan Braithwaite via GitGitGadget, Mar 7, 2026
  24. Patrick SteinhardtMar 11, 2026
  25. Alan BraithwaiteMar 15, 2026
  26. clone: add clone.<url>.defaultObjectFilter configAlan Braithwaite via GitGitGadget, Mar 15, 2026
  27. Junio C HamanoMar 15, 2026
  28. Patrick SteinhardtMar 16, 2026
  29. Junio C HamanoMay 11, 2026
  30. Patrick SteinhardtMay 11, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.