On 21.10.2020 19:31, Taylor Blau wrote: > If you have a promisor remote which is missing objects, running > 'git blame' etc. will transparently download whatever objects it > is missing. This is correct, but it downloads things one at a time, which in case of larger repo such as Linux could take weeks to complete. And downloading more things at once isn't easy without the suggested command. It is possible to traverse commit graph, requesting all discovered objects at once, but again in case of Linux, that would mean sending multiple requests with lists of 1 million+ oids. And the number of requests is around the maximum tree depth. Doesn't sound nice.
Jonathan Tan knows better than I do here. Maybe he could chime in.
I already CC'ed him, I hope he finds time to reply.
I see what you're saying. Here sparse-checkout and partial clones confusingly diverge: what you really want is to say "I want all of the objects that I need to construct this directory at any point in history" so that you can run "git blame" on some path within that directory without the need for a follow-up fetch.
Right.
In any case the '--filter=sparse:<oid>' bit is not recommended for use, but perhaps this is a convincing use-case. I didn't follow the partial clone development close enough to know whether this has already been discussed, but I'm sure that it has.
Unfortunately '--filter=sparse:<oid>' requires the list to be already committed on server, which limits the usefulness of it a lot.