Jason Vas Dias <jason.vas.dias@xxxxxxxxx> wrote: > It appears GIT has no way of specifying a timeout for a clone operation - > if the server decides not to complete a get request, the clone can > hang forever - > is this correct ? git uses SO_KEEPALIVE for all connections it makes, so whatever your kernel TCP keepalive knobs are set at. By default, it's very long (around 2 hours), but you can change them using the tcp_keepalive_* knobs in /proc/sys/net/ipv4/ under Linux. I suppose we can do shorter timeouts (at least under Linux) via setsockopt(.. TCP_KEEP*) knobs, or we can call poll() ourselves to timeout connections. However, git packing operations on the server can take a long time; so it might be bad to timeout manually unless we know the connection is really dead. > This appears to be what I am seeing, in a script that is attempting to do many > successive clone operations, eg. of > git://anongit.freedesktop.org/xorg/* , the script > occasionally hangs in a clone - I can see with netstat + strace that the TCP > connection is open and GIT is trying to read . > Is there any option I can specify to get the clone to timeout, or do I manually > have to strace the git process and send it a signal after a hang is detected? I added git:// support for SO_KEEPALIVE in commit e47a8583a202 ("enable SO_KEEPALIVE for connected TCP sockets") back in 2011 (v1.7.10), and http:// support later in 2013 (v1.8.5) with commit a15d069a1986 ("http: enable keepalive on TCP sockets") -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html