gitserver: Add option to disable the command timeout
Created by: chrismwendt
Rockskip currently relies on the ability to execute long-running commands:
-
git log
to process commits one-by-one. It takes ~5 minutes on sourcegraph/sourcegraph, and hours on the megarepo. -
git archive
to run ctags on files. It takes a few minutes on big commits.
This PR adds the option to disable gitserver's default command timeout for these long-running commands. The command is still bound by the HTTP context, so the command will not get orphaned by a dropped connection.
Alternatively, Rockskip could retry calls to git log
, but git archive
would be much more difficult to solve (Rockskip would have to keep track of paths that it had processed within a commit, keep track of more locking/transaction states, etc.).