On Tue, Oct 3, 2017 at 7:39 AM, Jeff Hostetler <git@xxxxxxxxxxxxxxxxx> wrote: > > 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. > 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. > 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.