> On 01 Jun 2017, at 15:33, Ben Peart <peart...@gmail.com> wrote:
> 
> 
> 
> On 6/1/2017 8:48 AM, Lars Schneider wrote:
>> Hi,
>> we occasionally see "The remote end hung up unexpectedly" (pkt-line.c:265)
>> on our `git fetch` calls (most noticeably in our automations). I expect
>> random network glitches to be the cause.
>> In some places we added a basic retry mechanism and I was wondering
>> if this could be a useful feature for Git itself.
> 
> Having a configurable retry mechanism makes sense especially if it allows 
> continuing an in-progress download rather than aborting and trying over.  I 
> would make it off by default so that any existing higher level retry 
> mechanism doesn't trigger a retry storm if the problem isn't a transient 
> network glitch.
Agreed.


> Internally we use a tool 
> (https://github.com/Microsoft/GVFS/tree/master/GVFS/FastFetch) to perform 
> fetch for our build machines.  It has several advantages including retries 
> when downloading pack files.

That's a "drop-in" replacement for "git fetch"?! I looked a bit through the 
"git fetch" code and retry (especially with continuing in-progress downloads) 
looks like a bigger change than I expected because of the current "die() 
in case of error" implementation.


> It's biggest advantage is that it uses multiple threads to parallelize the 
> entire fetch and checkout operation from end to end (ie the download happens 
> in parallel as well as checkout happening in parallel with the download) 
> which makes it take a fraction of the overall time.

Interesting. Do you observe noticeable speed improvements with fetch delta 
updates,
too? This is usually fast enough for us.

The people I work with usually complain that the "clone operation" is slow. The
reason is that they clone over and over again to get a "clean checkout". I try 
to explain to them in that case that every machine should clone only once and 
that there are way more efficient ways to get a clean checkout.


> When time permits, I hope to bring some of these enhancements over into git 
> itself.

That would be great!


- Lars

Reply via email to