2011-06-23 37 views
8

Tôi đang có một tập lệnh chạy git clone/pull tự động (điều này thực sự xảy ra bên trong jenkins CI, nhưng câu hỏi của tôi là tổng quát hơn). Máy chủ git từ xa dựa trên HTTPS. Máy có trình khách git có kết nối internet DSL không ổn định, vì vậy đôi khi kết nối lại và thay đổi địa chỉ IP, mất tất cả các kết nối hiện có của nó. Khi kết nối thất bại trong khi máy khách git đang chạy, máy khách không bao giờ thành công nhưng nó cũng không thành công với thời gian chờ, vì vậy kịch bản của tôi bị treo cứng.Có cách nào để thực hiện git qua thời gian chờ http không?

Tôi muốn thiết lập ứng dụng khách để hết thời gian chờ sau một khoảng thời gian (vì vậy tập lệnh có thể thử lại hoặc đăng nhập thất bại hoặc thực hiện bất kỳ hành động nào khác). Nhưng tôi không tìm thấy bất kỳ tùy chọn timeout nào trong manpage git-config. Tôi tìm thấy a related question nhưng nó chỉ dành cho kết nối SSH. Bạn có biết nếu có một sự thay thế cho các máy chủ http?

Trả lời

6

Bạn có thể thử sử dụng

http.lowSpeedLimit, http.lowSpeedTime

Nếu tốc độ truyền HTTP là ít hơn http.lowSpeedLimit lâu hơn http.lowSpeedTime giây, việc chuyển giao là bị hủy bỏ. Có thể bị ghi đè bởi GIT_HTTP_LOW_SPEED_LIMIT và môi trường GIT_HTTP_LOW_SPEED_TIME .

+0

Điều này dường như hoạt động, cảm ơn. Ít nhất tôi đã không gặp vấn đề trong một thời gian. –

+0

@manojlds đơn vị http.lowSpeedLimit làm tôi đặt nó là 10kbps –

+0

@adnankamili bytes mỗi giây. Tham khảo: http://blogs.collab.net/git/tips-on-git –

1

Thêm phần này vào .gitconfig ...

[http] 
lowSpeedLimit = 1000 
lowSpeedTime = 20 

lowSpeedLimit là byte mỗi giây

Tôi gọi nó là mệnh đề CodePlex.

6

bổ sung để CAD bloke 's câu trả lời:

Cũng

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

hoạt động tốt.

Ví dụ trên có nghĩa là hành động từ xa sẽ chặn khi tốc độ được giữ dưới 1KB/giây trong 600 giây (10 phút), hành động sẽ chặn.

Các vấn đề liên quan