Re: resumable git clone
Re: resumable git clone
Posted Jan 28, 2016 10:38 UTC (Thu) by jnareb (subscriber, #46500)In reply to: A change of maintainership for Mercurial by viro
Parent article: A change of maintainership for Mercurial
The problem is the following (from what I understand; I didn't try to implement such protocol myself).
First, with "smart" protocols client and server negotiate what server has and client wants, and what revisions client and server have in common, to send minimal number of objects (well, as minimal as possible with constraints they work under, like time spent on finding minimal set). This means that between starting an interrupted fetch and re-starting the fetch, both client and server might been updated with new revisions (or some revisions might be "deleted").
Second, server creates individualized packfile on the fly, with the data (revisions) client needs. Packing is multi-threaded for performance reasons, and is driven by heuristics... and that means that even if the set of objects is the same, packfile might be not byte for byte identical. That's I think the major stumbling point - IIRC any attempts of making packing predictable slowed the operation down; also, ultimately failed.
HTH
BTW. there is something called GitTorrent there...
