Source Code Management
The Source Code Management team is responsible for all backend aspects of the product categories that fall under the Source Code group of the Create stage of the DevOps lifecycle.
The Source Code Management team interfaces with the Gitaly and Code Review teams and works across three codebases: Workhorse, GitLab Shell and GitLab Rails.
Source Code Features Reference
Features owned by the Source Code Management group are listed on the Features by Group Page.
Code Owners
Source Code Management shares ownership of Code Owners with the Code Review group.
Approval Rules
Push rules
Protected Branches
Details about Protected Branches models can be found in the Code Owners technical reference page.
Repositories
Project Templates
Git LFS
Technical Stack
GitLab Rails
Gitaly touch points
Gitaly provides high-level RPC access to Git repositories. It is present in every GitLab installation and coordinates Git repository storage and retrieval. Gitaly implements a client-server architecture with Gitaly as the server and Gitaly clients, also known as Gitaly consumers, including:
- GitLab Rails
- GitLab Shell
- GitLab Workhorse
Gitaly Rails provides API endpoints that are counterparts of Gitaly RPCs. For more information, read Gitaly touch points.
Annotated Rails Source Code
The :source_code_management
annotation indicates which code belongs to the Source Code Management
group in the Rails codebase. The annotated objects are presented on
this page along
with the Error Budgets dashboards.
GitLab Workhorse
GitLab Workhorse is a smart reverse proxy for GitLab. It handles “large” HTTP
requests such as file downloads, file uploads, git push
, git pull
and git
archive downloads.
Workhorse itself is not a feature, but there are several features in GitLab that would not work efficiently without Workhorse.
GitLab Shell
GitLab Shell handles Git SSH sessions for GitLab and modifies the list of authorized keys. For more information, refer to the GitLab Shell documentation.
To learn about the reasoning behind our creation of gitlab-sshd
, read the blog post
Why we implemented our own SSHD solution.