馃悽 Finish rearchitecting/rewriting gitlab-shell
the [GitLab Shell](https://gitlab.com/gitlab-org/gitlab-shell) component has a long history at GitLab. At one time, it was envisioned as the sole point where all git-related operations - including SSH push - would take place. Over time, and with the introduction of Gitaly, its scope has been steadily reduced. Now, three main pieces of functionality remain: - [x] Manage the `~git/.ssh/authorized_keys` file - [ ] Handle SSH operations, principally git clone / push - [x] Hooks to integrate git operations with GitLab Managing the `authorized_keys` file properly belongs with GitLab itself, and the hooks belong in Gitaly. The remaining operations are mostly thin wrappers around a GitLab internal API and Gitaly, and would benefit, both in terms of performance and complexity, from being written in Go instead. Currently, we shell out to Go helper binaries for several of the operations. The ~Create team has an OKR to complete this work in FY20-Q1 (Fiscal year 2020, quarter 1, which lasts from 2019-01-01 through 2019-04-30 as we are aligning our OKR quarters with our fiscal quarters).
epic