Subject: Re: [PATCH] clone, progress: add --no-turtle-speed option to abort slow clones

From: "brian m. carlson" <[email-masked]>
Date: Fri, 6 Mar 2026 23:29:46 +0000

On 2026-03-06 at 22:14:28, Mike Banon wrote:
> When cloning large repositories from a website with multiple Git servers,
> the client may be directed to a "turtle-slow" server, causing the transfer
> to proceed at an unusably slow speed. This can lead to stalled downloads,
> particularly problematic for automated scripts that clone many
> repositories. This option makes Git abort the clone if the download rate
> falls below 128 KiB/s while receiving objects, typically catching slow
> servers early in the transfer, enabling scripts to retry the clone until
> they obtain a fast connection.

I'm not aware of any servers that this option would be useful for, but
I'm willing to assume for the sake of argument that some exist with this
design.  I don't think it's a very good design, but I admit that there
are many things on the Internet that are poorly designed.

I think it would be more helpful to provide an option
`--min-speed=128KiB` or something.  Assuming Git is still around in a
decade, we might consider 10 MiB/s to be absurdly slow then and an
option that hard-coded the slow speed would be decidedly less useful.
Many users might have different speeds that would be more tailored to
their environment even now.

I also think that the word "turtle" in this context might be poorly
understood by people who are not native English speakers.  I agree that
turtles are typically thought of as slow creatures, but they may
epitomize other traits in other languages or cultures (such as wisdom or
longevity[0]) that might not bring to mind slowness.

In addition, I would think we'd want to update the manual page as well.
My guess is that CI would have caught the fact that the option was not
present in the manual page.

I didn't give extensive review to the design, but I would think passing
an option to the child process or using some sort of option message
(such as in the HTTP helper) would be better than passing an environment
variable if that's possible.  If it's not, perhaps the commit message
could explain why that wouldn't work.

[0] https://en.wikipedia.org/wiki/Cultural_depictions_of_turtles
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA