有没有办法使git通过http超时?

29

我正在运行一个自动执行 git clone/pull的脚本(实际上是在 jenkins CI 内运行),远程 git 服务器是基于 HTTPS 的。拥有 git 客户端的机器具有不稳定的 DSL 互联网连接,因此它有时会重新连接并更改 IP 地址,导致丢失所有现有连接。当 git 客户端在连接失败时运行时,它从不成功,但也不会超时失败,因此我的脚本挂起。

我想设置客户端在一段时间后超时(以便脚本可以重试、记录失败或采取任何其他操作)。但我没有在 git-config 手册中找到任何超时选项。我找到了相关问题但只适用于 SSH 连接。你知道是否有 http 服务器的替代方案吗?


如果您想要修补 git 本身以获得环境变量 GIT_HTTP_CONNECT_TIMEOUT 并/或覆盖 ~/.gitconfig 中的 http.connecttimeout,请参见此答案 - user11509478
3个回答

26
< p>除了 < em>CAD bloke 的答案之外,还要补充:

< p>此外

git config --global http.lowSpeedLimit 1000
git config --global http.lowSpeedTime 600

运行良好。

上面的例子表示,当远程操作保持在每秒不到1KB的速度下达600秒(10分钟)时,该操作将被阻塞。


肯定不行。请尝试使用以下命令:git clone --verbose --mirror --depth=1 http://git.deha.vn:1080/bienhoang/deha-command.git - Theodore R. Smith

17

您可以尝试使用

http.lowSpeedLimit, http.lowSpeedTime:

如果HTTP传输速度,以每秒字节数计算,低于“http.lowSpeedLimit”并持续超过“http.lowSpeedTime”秒,则传输将被中止。
可以通过GIT_HTTP_LOW_SPEED_LIMITGIT_HTTP_LOW_SPEED_TIME环境变量进行覆盖。


Git 2.41(2023年第二季度)增加了http.lowSpeedLimit的单位。

请参见提交0aefe4c(2023年5月13日),作者为Corentin Garcia(corenting
(由Junio C Hamano -- gitster --提交1f141d6中合并,2023年5月20日)

doc/git-config:为http.lowSpeedLimit添加单位

签名作者:Corentin Garcia

在文档中为http.lowSpeedLimit添加字节每秒的单位。

git config现在在其手册页面中包含以下内容:

如果HTTP传输速度以每秒字节数表示,则...


这似乎有效,谢谢。至少我已经有一段时间没看到这个问题了。 - Daniel F. Moisset
@manojlds http.lowSpeedLimit的单位是什么?我应该将其设置为10kbps吗? - adnan kamili

11

将此内容添加到.gitconfig文件中...

[http]
lowSpeedLimit = 1000
lowSpeedTime = 20

低速限制是每秒字节数。

我称之为Codeplex条款。


请解释“Codeplex条款”名称背后的原因。 - HackerDaGreat57
2
Codeplex在过去真的很慢。 - CAD bloke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接