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.