Linus Torvalds [off-list ref] writes:
Any "fetch" logic that writes the refs before all the objects are gathered
is _buggy_. It's not about "recovery", it should never do that in the
first place.
I agree about refs, but in this case what is stored, and is used
as a signal not to refetch to the next run, is the commit
object. Ideally we should defer creating trees until we store
all blobs and subtrees, and commits until we do its tree, but
the fetch.c (formerly called pull.c) is not written that way
from day one.
Is it just the http one that is this broken?
I belive all of the commit walkers share this property.