On Wed, Oct 31, 2018 at 07:28:09AM +0100, Christian Couder wrote: > > For (2), I would like to see us improve the remote helper > > infrastructure instead of introducing a new ODB helper. Remote > > helpers are already permitted to fetch some objects without listing > > refs --- perhaps we will want to > > > > i. split listing refs to a separate capability, so that a remote > > helper can advertise that it doesn't support that. (Alternatively > > the remote could advertise that it has no refs.) > > > > ii. Use the "long-running process" mechanism to improve how Git > > communicates with a remote helper. > > Yeah, I agree that improving the remote helper infrastructure is > probably better than what I have been trying to add. And I agree with > the above 2 steps you propose. One thing you might want to port over is the ability to ask the remote helper "tell me the type and size of these objects". The reason I built that into the original external-odb interface proposal was so that diff could easily skip large objects without faulting them in (because they're considered binary, and we'd just say "binary files differ" anyway). That makes things like "git log -p" work a lot better (try it with a blob-less partial clone now; it's pretty painful). I know that's kind of the _opposite_ of how partial clones work now, where we try really hard not to have to even tell the client the full list of objects. That's good if the reason you want a partial clone is because there are gigantic numbers of objects (e.g., the Windows repo). But I think many people are interested in having a more moderate number of large objects (e.g., things like game development that are using git-lfs now). It would be great if we could support both use cases easily. -Peff