syntax = "proto3"; package gitaly; option go_package = "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb"; import "lint.proto"; import "shared.proto"; 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 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: MUTATOR }; } } 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; } 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; } 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; string gl_repository = 4; 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; } 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; } 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; } 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; }