如何設置git push和git pull的超時時間?

原文地址: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.lowSpeedLimithttp.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_configConnectTimeout 來設置連接服務器的超時時間。 但這個選項只針對連接服務器這個階段生效(即創建連接,SSH 握手和密鑰交換這三個階段),之後就無法進行超時約束了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章