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