Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ssh.proto « proto - gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 95a1db249add3caab29be9d057a83e55b1db9687 (plain)
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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 {
  // SSHUploadPack is an RPC to forward git-upload-pack(1) to Gitaly for SSH sessions. The RPC uses
  // bidirectional streaming so the client can stream stdin and the server can stream stdout and
  // stderr for git-upload-pack(1).
  rpc SSHUploadPack(stream SSHUploadPackRequest) returns (stream SSHUploadPackResponse) {
    option (op_type) = {
      op: ACCESSOR
    };
  }

  // SSHUploadPackWithSidechannel is an RPC to forward git-upload-pack(1) to Gitaly for SSH
  // sessions, via sidechannels. Sidechannel connections sidestep gRPC Protobuf message overhead and
  // allow higher throughput of bulk data transfers. The stdin, stdout, and stderr for the
  // git-upload-pack(1) are streamed through the sidechannel connection.
  rpc SSHUploadPackWithSidechannel(SSHUploadPackWithSidechannelRequest) returns (SSHUploadPackWithSidechannelResponse) {
    option (op_type) = {
      op: ACCESSOR
    };
  }

  // SSHReceivePack is an RPC to forward git-receive-pack(1) to Gitaly for SSH sessions. The RPC uses
  // bidirectional streaming so the client can stream stdin and the server can stream stdout and
  // stderr for git-receive-pack(1).
  rpc SSHReceivePack(stream SSHReceivePackRequest) returns (stream SSHReceivePackResponse) {
    option (op_type) = {
      op: MUTATOR
    };
  }

  // SSHUploadArchive is an RPC to forward git-upload-archive(1) to Gitaly for SSH sessions. The RPC
  // uses bidirectional streaming so the client can stream stdin and the server can stream stdout
  // and stderr for git-upload-archive(1).
  rpc SSHUploadArchive(stream SSHUploadArchiveRequest) returns (stream SSHUploadArchiveResponse) {
    option (op_type) = {
      op: ACCESSOR
    };
  }
}

// SSHUploadPackRequest is a request for the SSHUploadPack RPC. The first request of the stream must
// only contain repository, git_config_options, and git_protocol. All subsequent requests must only
// contain stdin data.
message SSHUploadPackRequest {
  // repository is the repository where git-upload-pack(1) is spawned.
  Repository repository = 1 [(target_repository)=true];
  // stdin is a chunk of raw data to be copied to git-upload-pack(1) 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";
  // git_config_options are parameters to use with git -c (key=value pairs).
  repeated string git_config_options = 4;
  // git_protocol is the git protocol version.
  string git_protocol = 5;
}

// SSHUploadPackResponse is a response for the SSHUploadPack RPC. Responses are stream back to
// clients in chunks containing the stdout and stderr from git-upload-pack(1).
message SSHUploadPackResponse {
  // stdout is a chunk of raw data from git-upload-pack(1) standard output.
  bytes stdout = 1;
  // stderr is a chunk of raw data from git-upload-pack(1) standard error.
  bytes stderr = 2;
  // exit_status is the exit status when the command has finished. This field
  // may be nil. This is intentional.
  ExitStatus exit_status = 3;
}

// SSHUploadPackWithSidechannelRequest is a request for the SSHUploadPackWithSidechannel RPC.
message SSHUploadPackWithSidechannelRequest {
  // repository is the repository where git-upload-pack(1) is spawned.
  Repository repository = 1 [(target_repository)=true];
  // git_config_options are parameters to use with git -c (key=value pairs).
  repeated string git_config_options = 2;
  // git_protocol is the git protocol version.
  string git_protocol = 3;
}

// SSHUploadPackWithSidechannelResponse is a response for the SSHUploadPackWithSidechannel RPC.
message SSHUploadPackWithSidechannelResponse {
  // packfile_negotiation_statistics is the packfile negotiation statistics.
  PackfileNegotiationStatistics packfile_negotiation_statistics = 1;
}

// SSHReceivePackRequest is a request for the SSHReceivePack RPC. All fields other than stdin must
// be set in the first request message. Subsequent requests in the stream must only contain the
// stdin field.
message SSHReceivePackRequest {
  // repository is the repository where git-receive-pack(1) is spawned.
  Repository repository = 1 [(target_repository)=true];
  // stdin is a chunk of raw data to be copied to git-receive-pack(1) standard input
  bytes stdin = 2;
  // gl_id is the GitLab ID of the user. This is used by Git {pre,post}-receive hooks.
  string gl_id = 3;
  // gl_repository refers to the GitLab repository. This is used by Git {pre,post}-receive hooks.
  string gl_repository = 4;
  // gl_username is the GitLab Username of the user. This is used by Git {pre,post}-receive hooks.
  string gl_username = 5;
  // git_protocol is the git protocol version.
  string git_protocol = 6;
  // git_config_options are parameters to use with git -c (key=value pairs).
  repeated string git_config_options = 7;
}

// SSHReceivePackResponse is a response for the SSHReceivePack RPC. Responses are stream back to
// clients in chunks containing the stdout and stderr from git-receive-pack(1).
message SSHReceivePackResponse {
  // stdout is a chunk of raw data from git-receive-pack(1) standard output.
  bytes stdout = 1;
  // stderr is a chunk of raw data from git-receive-pack(1) standard error.
  bytes stderr = 2;
  // exit_status is the exit status when the command has finished. This field
  // may be nil. This is intentional.
  ExitStatus exit_status = 3;
}

// SSHUploadArchiveRequest is a request for the SSHUploadArchive RPC. The first request of the
// stream must only contain repository. All subsequent requests must only contain stdin data.
message SSHUploadArchiveRequest {
  // repository is the repository where git-upload-archive(1) is spawned.
  Repository repository = 1 [(target_repository)=true];
  // stdin is a chunk of raw data to be copied to git-upload-archive(1) standard input.
  bytes stdin = 2;
}

// SSHUploadArchiveResponse is a response for the SSHUploadArchive RPC. Responses are stream back to
// clients in chunks containing the stdout and stderr from git-upload-archive(1).
message SSHUploadArchiveResponse {
  // stdout is a chunk of raw data from git-upload-archive(1) standard output.
  bytes stdout = 1;
  // stderr is a chunk of raw data from git-upload-archive(1) standard error.
  bytes stderr = 2;
  // exit_status is the exit status when the command has finished. This field
  // may be nil. This is intentional.
  ExitStatus exit_status = 3;
}