-
Bug
-
Resolution: Fixed
-
Major
-
None
When cloning a large repository over HTTP, the git server goes quiet for quite some time, busy computing a pack file. Normally, Apache is configured such that a prolonged inactivity in a socket will trigger a shutdown. So what the end user sees is that after a while, "git clone" fails by the unexpected connection reset by the server.
If the user tries the same command from the shell, Git silently adds the --progress option (see the quote from the man page.) This keeps the socket chatty enough to avoid a shutdown from Apache.
--progress Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal.
So the unsuspecting users would end up concluding that Jenkins is broken.
Even worse, normally the server is owned by a different person, which makes it difficult to tweak the Apache setting. Besides, there are legitimate reasons why Apache needs to shutdown idle connections (for example to avoid DoS attack.)
So to improve the user experience, I think the best course of action is for the Git plugin to add the --progress option to the "git clone" command. We don't need to report the git clone output unless it fails, so this doesn't clutter the output, and in this way Jenkins would Just Work (TM).