Re: [PATCH 00/18] Partial clone (from clone to lazy fetch in 18 patches)
From: Jeff Hostetler <hidden>
Date: 2017-10-04 13:30:47
On 10/3/2017 7:42 PM, Jonathan Tan wrote:
On Tue, Oct 3, 2017 at 7:39 AM, Jeff Hostetler [off-list ref] wrote:quoted
As I see it there are the following major parts to partial clone: 1. How to let git-clone (and later git-fetch) specify the desired subset of objects that it wants? (A ref-relative request.) 2. How to let the server and git-pack-objects build that incomplete packfile? 3. How to remember in the local config that a partial clone (or fetch) was used and that missing object should be expected? 4. How to dynamically fetch individual missing objects individually? (Not a ref-relative request.) 5. How to augment the local ODB with partial clone information and let git-fsck (and friends) perform limited consistency checking? 6. Methods to bulk fetching missing objects (whether in a pre-verb hook or in unpack-tree) 7. Miscellaneous issues (e.g. fixing places that accidentally cause a missing object to be fetched that don't really need it).Thanks for the enumeration.quoted
As was suggested above, I think we should merge our efforts: using my filtering for 1 and 2 and Jonathan's code for 3, 4, and 5. I would need to eliminate the "relax" options in favor of his is_promised() functionality for index-pack and similar. And omit his blob-max-bytes changes from pack-objects, the protocol and related commands. That should be a good first step.This sounds good to me. Jeff Hostetler's filtering (all blobs, blobs by size, blobs by sparse checkout specification) is more comprehensive than mine, so removing blob-max-bytes from my code is not a problem.quoted
We both have thoughts on bulk fetching (mine in pre-verb hooks and his in unpack-tree). We don't need this immediately, but can wait until the above is working to revisit.Agreed.
Thanks. I'll make a first pass at merging our efforts then and post something shortly. Jeff