我发现的所有问题都希望避免 git 推/拉超时。就我而言,我想强迫他们。我的推+拉都是通过 ssh 传输到在某个时间点可能不可用的远程计算机。例如,我有一个脚本可以推送到两个远程公共存储库。我不希望这个脚本在推送到第一个存储库并且该机器不可用时永远挂起。相反,经过一段时间的超时后,我希望推送失败并继续第二个存储库。
这里有什么选择吗?
我认为您无法使用内置功能进行自动故障转移。但由于 Git 仅在底层使用 SSH,因此应该可以在
ConnectTimeout
中为相关机器添加 .ssh/config
选项。比照。 man ssh_config
。然后 shell 中类似 git push foo || git push bar
的东西应该可以实现你想要的功能。
来自 https://github.com/git/git/blob/master/Documentation/config.txt(撰写本文时第 1770 行左右)
http.lowSpeedLimit,http.lowSpeedTime:: 如果 HTTP 传输速度小于“http.lowSpeedLimit” 时间超过“http.lowSpeedTime”秒,传输将中止。 可以被“GIT_HTTP_LOW_SPEED_LIMIT”覆盖并且 “GIT_HTTP_LOW_SPEED_TIME”环境变量。
我将其称为 Codeplex 调整。将其添加到您的 .gitconfig
[http]
lowSpeedLimit = 1000
lowSpeedTime = 20