2011-06-23 11 views
8

Mam skrypt uruchamiający git clone/pull automatycznie (tak naprawdę dzieje się w jenkins CI, ale moje pytanie jest bardziej ogólne). Zdalny serwer git jest oparty na HTTPS. Maszyna z klientem git ma niestabilne połączenie internetowe DSL, więc czasami łączy się ponownie i zmienia adres IP, tracąc wszystkie istniejące połączenia. Kiedy połączenie nie powiedzie się, gdy klient git jest uruchomiony, klient nigdy się nie powiedzie, ale nie kończy się również z powodu przekroczenia limitu czasu, więc mój skrypt się zawiesza.Czy istnieje sposób, aby zrobić git ponad limit czasu http?

Chciałbym skonfigurować klienta tak, aby upłynął pewien czas po pewnym czasie (aby skrypt mógł ponowić próbę lub zarejestrować awarię lub wykonać dowolną inną akcję). Ale nie znalazłem żadnej opcji timeout na stronie man git-config. Znalazłem a related question, ale jest to tylko dla połączeń SSH. Czy wiesz, czy istnieje alternatywa dla serwerów http?

Odpowiedz

6

Można spróbować użyć

http.lowSpeedLimit, http.lowSpeedTime

Jeśli szybkość transferu HTTP jest mniej niż http.lowSpeedLimit dłużej niż http.lowSpeedTime sekund, przeniesienie jest niedonoszony. Można zastąpić przez zmienne GIT_HTTP_LOW_SPEED_LIMIT i GIT_HTTP_LOW_SPEED_TIME .

+0

To wydawało się działać, dziękuję. Przynajmniej nie widziałem problemu przez jakiś czas. –

+0

@manojlds co to jest jednostka http.lowSpeedLimit czy ustawić ją jako 10kbps –

+0

@adnankamili bajtów na sekundę. Ref: http://blogs.collab.net/git/tips-on-git –

1

Dodaj to do .gitconfig ...

[http] 
lowSpeedLimit = 1000 
lowSpeedTime = 20 

lowSpeedLimit jest bajtów na sekundę

Ja nazywam to klauzula CodePlex.

6

dodatkowy do CAD facet „s odpowiedź:

także

git config --global http.lowSpeedLimit 1000 
git config --global http.lowSpeedTime 600 

działa dobrze.

Powyższy przykład oznacza, że ​​działanie zdalne zostanie zablokowane, gdy prędkość będzie utrzymywała się poniżej 1KB/s przez 600 sekund (10 minut), akcja zostanie zablokowana.