syntax = "proto3"; package gitaly; import "lint.proto"; import "shared.proto"; option go_package = "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb"; // SSHService is a service that provides RPCs required for SSH-based Git clones. service SSHService { // To forward 'git upload-pack' to Gitaly for SSH sessions rpc SSHUploadPack(stream SSHUploadPackRequest) returns (stream SSHUploadPackResponse) { option (op_type) = { op: ACCESSOR }; } // To forward 'git upload-pack' to Gitaly for SSH sessions, via sidechannels rpc SSHUploadPackWithSidechannel(SSHUploadPackWithSidechannelRequest) returns (SSHUploadPackWithSidechannelResponse) { option (op_type) = { op: ACCESSOR }; } // To forward 'git receive-pack' to Gitaly for SSH sessions rpc SSHReceivePack(stream SSHReceivePackRequest) returns (stream SSHReceivePackResponse) { option (op_type) = { op: MUTATOR }; } // To forward 'git upload-archive' to Gitaly for SSH sessions rpc SSHUploadArchive(stream SSHUploadArchiveRequest) returns (stream SSHUploadArchiveResponse) { option (op_type) = { op: ACCESSOR }; } } // This comment is left unintentionally blank. message SSHUploadPackRequest { // 'repository' must be present in the first message. Repository repository = 1 [(target_repository)=true]; // A chunk of raw data to be copied to 'git upload-pack' standard input bytes stdin = 2; // Prevent re-use of field id 3 and/or the "git_config_parameters" name reserved 3; reserved "git_config_parameters"; // Parameters to use with git -c (key=value pairs) repeated string git_config_options = 4; // Git protocol version string git_protocol = 5; } // This comment is left unintentionally blank. message SSHUploadPackResponse { // A chunk of raw data from 'git upload-pack' standard output bytes stdout = 1; // A chunk of raw data from 'git upload-pack' standard error bytes stderr = 2; // This field may be nil. This is intentional: only when the remote // command has finished can we return its exit status. ExitStatus exit_status = 3; } // This comment is left unintentionally blank. message SSHUploadPackWithSidechannelRequest { // 'repository' must be present in the first message. Repository repository = 1 [(target_repository)=true]; // Parameters to use with git -c (key=value pairs) repeated string git_config_options = 2; // Git protocol version string git_protocol = 3; } // This comment is left unintentionally blank. message SSHUploadPackWithSidechannelResponse { } // This comment is left unintentionally blank. message SSHReceivePackRequest { // 'repository' must be present in the first message. Repository repository = 1 [(target_repository)=true]; // A chunk of raw data to be copied to 'git upload-pack' standard input bytes stdin = 2; // Contents of GL_ID, GL_REPOSITORY, and GL_USERNAME environment variables // for 'git receive-pack' string gl_id = 3; // This comment is left unintentionally blank. string gl_repository = 4; // This comment is left unintentionally blank. string gl_username = 5; // Git protocol version string git_protocol = 6; // Parameters to use with git -c (key=value pairs) repeated string git_config_options = 7; } // This comment is left unintentionally blank. message SSHReceivePackResponse { // A chunk of raw data from 'git receive-pack' standard output bytes stdout = 1; // A chunk of raw data from 'git receive-pack' standard error bytes stderr = 2; // This field may be nil. This is intentional: only when the remote // command has finished can we return its exit status. ExitStatus exit_status = 3; } // This comment is left unintentionally blank. message SSHUploadArchiveRequest { // 'repository' must be present in the first message. Repository repository = 1 [(target_repository)=true]; // A chunk of raw data to be copied to 'git upload-archive' standard input bytes stdin = 2; } // This comment is left unintentionally blank. message SSHUploadArchiveResponse { // A chunk of raw data from 'git upload-archive' standard output bytes stdout = 1; // A chunk of raw data from 'git upload-archive' standard error bytes stderr = 2; // This value will only be set on the last message ExitStatus exit_status = 3; }