A few days ago, I tried updating my Linux kernel git clone, but the connection kept stalling/dropping after a few 10,000s of objects. I naively assumed that git-fetch would be smart enough not to download the same objects twice, and that running it a couple of times would eventually get the job done. Imagine my disappointment upon discovering that it was actually downloading the same pack over and over. This is quite annoying, as there is no easy way to incrementally bring a clone up to date (as opposed to incrementally deepening a shallow clone). I pity the poor kernel developer who's stuck on dialup and goes away for a couple of weeks. It'd be nice if git-fetch-pack (and git-receive-pack, I suppose) had an option to dig deeper in the database and figure out exactly which objects are needed, instead of the current cursory check on refs/. It would then be possible to extract the partial pack on failure, knowing that these objects will not be downloaded again.