原文地址:https://www.lujun9972.win/blog/2020/06/03/如何設置git-push和git-pull的超時時間?/index.html
不知道爲什麼,最近從 github 上git push 和 git pull 的時候總是不太穩定,有時候 pull 了半天都拉不下來,然後中斷後重試一次又很順暢了。
所以我想主動設置git push 和 git pull 的超時時間,這樣我可以在腳本中監測退出狀態後自動進行重試,而不是死等。
目前來看,似乎 git
並沒有一個配置項是能保證超過一段時間後一定終止退出的,只能通過 timeout
命令才能保證超時退出。
然而很多 UNIX 系統沒有 timeout
命令怎麼辦呢?我目前只找到兩個近似的解決方案,希望各位大神能提供其他的解決方法。
首先,通過 man git-config
我們可以發現 http.lowSpeedLimit
和 http.lowSpeedTime
這兩個選項是近似滿足要求的:
http.lowSpeedLimit, http.lowSpeedTime If the HTTP transfer speed is less than http.lowSpeedLimit for longer than http.lowSpeedTime seconds, the transfer is aborted. Can be overridden by the GIT_HTTP_LOW_SPEED_LIMIT and GIT_HTTP_LOW_SPEED_TIME environment variables.
然而這兩個選項只針對 HTTP 協議生效,其他協議則需要另闢蹊徑。
另一方面,既然 git 的低層是使用 ssh 協議,那麼其實我們可以通過通過配置 ssh_config
的 ConnectTimeout
來設置連接服務器的超時時間。
但這個選項只針對連接服務器這個階段生效(即創建連接,SSH 握手和密鑰交換這三個階段),之後就無法進行超時約束了。