Create: Source Code Backend

The Create:Source Code BE team focuses on the GitLab suite of Source Code Management (SCM) tools. It 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.

We interface with the Gitaly and Code Review teams, and work closely with the Create:Source Code Frontend team. The features we work with are listed on the Features by Group Page.

The team works across three codebases: Workhorse, GitLab Shell and GitLab Rails.

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 README. for GitLab Shell.

GitLab Rails

Source code API endpoints

Endpoint Threshold Source
DELETE /api/:version/projects/:id/protected_branches/:name :low source
GET /api/:version/internal/authorized_keys :high source
GET /api/:version/internal/lfs :high source
GET /api/:version/projects/:id/approval_rules :low
GET /api/:version/projects/:id/approval_settings default
GET /api/:version/projects/:id/approvals default
GET /api/:version/projects/:id/forks :low source
GET /api/:version/projects/:id/groups default source
GET /api/:version/projects/:id/languages :medium source
GET /api/:version/projects/:id/merge_request_approval_setting :medium source
GET /api/:version/projects/:id/merge_requests/:merge_request_iid/approval_rules :low source
GET /api/:version/projects/:id/merge_requests/:merge_request_iid/approval_settings :low source
GET /api/:version/projects/:id/merge_requests/:merge_request_iid/approval_state :low source
GET /api/:version/projects/:id/merge_requests/:merge_request_iid/approvals :low source
GET /api/:version/projects/:id/protected_branches default source
GET /api/:version/projects/:id/protected_branches/:name default source
GET /api/:version/projects/:id/protected_tags default
GET /api/:version/projects/:id/protected_tags/:name default
GET /api/:version/projects/:id/push_rule default
GET /api/:version/projects/:id/remote_mirrors default
GET /api/:version/projects/:id/repository/archive default
GET /api/:version/projects/:id/repository/blobs/:sha default
GET /api/:version/projects/:id/repository/blobs/:sha/raw default
GET /api/:version/projects/:id/repository/branches :low source
GET /api/:version/projects/:id/repository/branches/:branch :low source
GET /api/:version/projects/:id/repository/commits :low source
GET /api/:version/projects/:id/repository/commits/:sha default source
GET /api/:version/projects/:id/repository/commits/:sha/comments default source
GET /api/:version/projects/:id/repository/commits/:sha/diff :low source
GET /api/:version/projects/:id/repository/commits/:sha/merge_requests :low source
GET /api/:version/projects/:id/repository/commits/:sha/refs :low source
GET /api/:version/projects/:id/repository/compare :low source
GET /api/:version/projects/:id/repository/contributors default
GET /api/:version/projects/:id/repository/files/:file_path default
GET /api/:version/projects/:id/repository/files/:file_path/raw :low source
GET /api/:version/projects/:id/repository/tags :low source
GET /api/:version/projects/:id/repository/tree :low source
GET /api/:version/projects/:id/statistics default
GraphqlController#execute default
HEAD /api/:version/projects/:id/repository/files/:file_path :low source
HEAD /api/:version/projects/:id/repository/files/:file_path/raw :low source
POST /api/:version/internal/allowed default source
POST /api/:version/internal/lfs_authenticate :high source
POST /api/:version/internal/post_receive default source
POST /api/:version/internal/pre_receive :high source
POST /api/:version/projects/:id/approvals :low source
POST /api/:version/projects/:id/merge_requests/:merge_request_iid/approvals :low source
POST /api/:version/projects/:id/merge_requests/:merge_request_iid/approve :low source
POST /api/:version/projects/:id/merge_requests/:merge_request_iid/unapprove :low source
POST /api/:version/projects/:id/protected_branches :low source
POST /api/:version/projects/:id/repository/commits :low source
POST /api/:version/projects/:id/repository/files/:file_path :low source
PUT /api/:version/projects/:id/push_rule default
PUT /api/:version/projects/:id/repository/files/:file_path :low source
Projects::BlameController#show :low source
Projects::BlobController#create :low source
Projects::BlobController#diff :low source
Projects::BlobController#edit :low source
Projects::BlobController#show :low source
Projects::BlobController#update :low source
Projects::BranchesController#create :low source
Projects::BranchesController#destroy :low source
Projects::BranchesController#diverging_commit_counts :low source
Projects::BranchesController#index :low source
Projects::BranchesController#new :low source
Projects::CommitController#branches :low source
Projects::CommitController#merge_requests :low source
Projects::CommitController#pipelines :low source
Projects::CommitController#show :low source
Projects::CommitsController#show :low source
Projects::CommitsController#signatures :low source
Projects::CompareController#create :low source
Projects::CompareController#index :low source
Projects::CompareController#show :low source
Projects::CompareController#signatures :low source
Projects::FindFileController#list :low source
Projects::FindFileController#show :low source
Projects::ForksController#index :low source
Projects::GraphsController#show :low source
Projects::NetworkController#show :low source
Projects::PathLocksController#index :low source
Projects::RawController#show default
Projects::RefsController#logs_tree :low source
Projects::RefsController#switch :low source
Projects::RepositoriesController#archive default
Projects::Settings::RepositoryController#show :low source
Projects::TagsController#index :low source
Projects::TagsController#new :low source
Projects::TagsController#show :low source
Projects::TemplatesController#names :low source
Projects::TreeController#show :low source
ProjectsController#refs :low source
Repositories::GitHttpController#git_receive_pack default
Repositories::GitHttpController#git_upload_pack default
Repositories::GitHttpController#info_refs default
Repositories::LfsApiController#batch :medium source
Repositories::LfsLocksApiController#verify default
Repositories::LfsStorageController#download :medium source
Repositories::LfsStorageController#upload_authorize :medium source
Repositories::LfsStorageController#upload_finalize :low source