Migrate gitlab-shell git archive support to Golang
Follow-up from #74 (closed)
When someone runs git archive git@gitlab.com:foo/bar.git
, gitlab-shell checks permissions against the internal API, then spawns a separate (golang!) binary to service the git archive via gitaly if the user is authorized.
The implementation for this is currently in Ruby; we'd like to add a parallel Golang implementation that we can switch to using feature flags. Once the implementation has been enabled for a release without problems, we can remove the Ruby implementation.
To an extent, this issue relies on the work in #158 (closed), but the two can be worked on in parallel.
As part of this issue, we should avoid spawning the separate golang binary, in favour of talking to gitaly in the same process as the one doing the internal API checks. The less process management we have to do, the better.