Duy Nguyen <pclouds@xxxxxxxxx> writes: > On Fri, Sep 16, 2016 at 7:12 AM, Kevin Wern <kevin.m.wern@xxxxxxxxx> wrote: >> builtin/clone.c | 590 +++++++++++++++++++++++++++++++++++++------- > > Argh.. this is too big for my brain at this hour. It might be easier > to follow if you separate out some code move (I think I've seen some, > not sure). I'll try to have another look when I find time. But it's > great to hear from you again, the pleasant surprise in my inbox today, > as I thought we lost you ;-) There's hope for resumable clone maybe > before 2018 again. I had a similar thought. What "git clone" (WITHOUT Kevin's update) should have been was to be as close to * Parse command line arguments; * Create a new repository and go into it; this step would require us to have parsed the command line for --template, <directory>, --separate-git-dir, etc. * Talk to the remote and do get_remote_heads() aka ls-remote output; * Decide what fetch refspec to use, which alternate object store to borrow from; this step would require us to have parsed the command line for --reference, --mirror, --origin, etc; * Issue "git fetch" with the refspec determined above; this step would require us to have parsed the command line for --depth, etc. * Run "git checkout -b" to create an initial checkout; this step would require us to have parsed the command line for --branch, etc. and the current code Kevin is basing his work on is not quite in that shape. This round of the patches may be RFC so it may be OK but the ready-for-review work may need to do the refactoring to get it close to the above shape as a preparatory step before doing anything else. Once that is done, Kevin's series (other than the part that acutally does the resumable static file download) will become a very easily understood "Ah, we know where to prime the well from, so let's do that first" step inserted immediately before the "Issue 'git fetch'" step.