2011-06-23 11 views
8

私はgit clone/pullを自動的に実行するスクリプトを持っています(これは実際にジェンキンCI内で起こっていますが、私の質問はより一般的です)。リモートgitサーバーはHTTPSベースです。 gitクライアントを搭載したマシンには脆弱なDSLインターネット接続があるため、IPアドレスを再接続して変更することがあり、既存の接続をすべて失うことがあります。 gitクライアントの実行中に接続が失敗すると、クライアントは成功することはありませんが、タイムアウトで失敗しないので、スクリプトがハングアップします。httpタイムアウトでgitを実行する方法はありますか?

クライアントを設定して、一定期間後にタイムアウトするようにしています(スクリプトが再試行できるようにするか、失敗を記録するか、その他の操作を行うことができます)。しかし、私はgit-configマンページでタイムアウトオプションが見つかりませんでした。 a related questionが見つかりましたが、それはSSH接続のためだけです。 httpサーバの代替手段があるかどうか知っていますか?

答えて

6

あなたは、HTTP転送速度がhttp.lowSpeedTime秒以上 長くhttp.lowSpeedLimitより 小さい場合、 転送がある

http.lowSpeedLimit、http.lowSpeedTime

を使用して試すことができます中止されました。 GIT_HTTP_LOW_SPEED_LIMITと GIT_HTTP_LOW_SPEED_TIME環境で をオーバーライドすることができます。 変数。

+0

これはうまくいきました。ありがとうございました。少なくとも私はこの問題をしばらく見ていない。 –

+0

@ manojlds http.lowSpeedLimitの単位は何ですか?私は10kbpsで –

+0

@ adnankamiliバイト/秒に設定しますか?参照:http://blogs.collab.net/git/tips-on-git –

1

.gitconfigするためにこれを追加...

[http] 
lowSpeedLimit = 1000 
lowSpeedTime = 20 

lowSpeedLimitは、私はCodePlexに句それを呼び出すバイト毎秒

です。

CADのやつの答えに追加
6

また

git config --global http.lowSpeedLimit 1000 
git config --global http.lowSpeedTime 600 
正常に動作します

上記の例では、速度が1KB/s未満で600秒(10分)を超えた場合、リモートアクションがブロックされることを意味します。

関連する問題