我找到的所有问题都是想要避免 git push/pull 超时,而我的情况是希望强制执行超时。我的 push + pull 都通过 ssh 连接到可能在某个时间点不可用的远程机器上。例如,我有一个脚本将内容推送到两个公共仓库。当脚本将内容推送到第一个仓库但该机器不可用时,我不想让脚本一直挂起。相反,我希望在一定时间后超时并且推送失败,然后继续推送到第二个仓库。
这里有什么选项吗?
我找到的所有问题都是想要避免 git push/pull 超时,而我的情况是希望强制执行超时。我的 push + pull 都通过 ssh 连接到可能在某个时间点不可用的远程机器上。例如,我有一个脚本将内容推送到两个公共仓库。当脚本将内容推送到第一个仓库但该机器不可用时,我不想让脚本一直挂起。相反,我希望在一定时间后超时并且推送失败,然后继续推送到第二个仓库。
这里有什么选项吗?
我认为你不能使用内置功能进行自动故障转移。但是由于Git只是在SSH下运行,因此可以在.ssh/config
中为相关机器添加ConnectTimeout
选项。参见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