1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
syntax = "proto3";
package gitaly;
import "lint.proto";
import "packfile.proto";
import "shared.proto";
option go_package = "gitlab.com/gitlab-org/gitaly/v16/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 {
// Packfile negotiation statistics.
PackfileNegotiationStatistics packfile_negotiation_statistics = 1;
}
// 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;
}
|