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
|
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";
// SmartHTTPService is a service that provides RPCs required for HTTP-based Git
// clones via the smart HTTP protocol.
service SmartHTTPService {
// InfoRefsUploadPack provides the response for GET /info/refs?service=git-upload-pack.
// It is invoked when the client fetches packs from the server, meaning the server will
// upload the packs to that client. The client doesn't upload new objects. This is used
// to advertise the references available on the server to the client via
// git-upload-pack(1)'s `--advertise-refs` option.
rpc InfoRefsUploadPack(InfoRefsRequest) returns (stream InfoRefsResponse) {
option (op_type) = {
op: ACCESSOR
};
}
// InfoRefsReceivePack provides the response for GET /info/refs?service=git-receive-pack.
// It is invoked when the client pushes packs to the server, meaning the server
// will fetch the packs from the client. This is used to advertise the references
// available on the server to the client via git-receive-pack(1)'s `--advertise-refs`
// option.
rpc InfoRefsReceivePack(InfoRefsRequest) returns (stream InfoRefsResponse) {
option (op_type) = {
op: ACCESSOR
};
}
// PostUploadPackWithSidechannel provides the response for POST /upload-pack. It
// used to transfer pack files from the server to the client via sidechannels. This
// is invoked when the client executes `git fetch`.
//
// More info on sidechannels: https://gitlab.com/gitlab-org/gitaly/-/blob/master/doc/sidechannel.md
rpc PostUploadPackWithSidechannel(PostUploadPackWithSidechannelRequest) returns (PostUploadPackWithSidechannelResponse) {
option (op_type) = {
op: ACCESSOR
};
}
// PostReceivePack provides the response for POST /receive-pack. It used to transfer
// pack files from the client to the server. This is invoked when the client executes `git push`.
rpc PostReceivePack(stream PostReceivePackRequest) returns (stream PostReceivePackResponse) {
option (op_type) = {
op: MUTATOR
};
}
}
// InfoRefsRequest is a request for the InfoRefsUploadPack and InfoRefsUploadPack rpcs.
message InfoRefsRequest {
// Repository is the repository on which to operate.
Repository repository = 1 [(target_repository)=true];
// GitConfigOptions are parameters to use with git -c (key=value pairs).
repeated string git_config_options = 2;
// GitProtocol is the git protocol version.
string git_protocol = 3;
}
// InfoRefsResponse is the response of InfoRefsUploadPack and InfoRefsUploadPack rpcs.
// It is used to provide the client with the servers advertised refs.
message InfoRefsResponse {
// Data is the raw data copied from the stdout of git-upload-pack(1) or
// git-receive-pack(1) when used with the `--advertise-refs` flag.
bytes data = 1;
}
// PostUploadPackWithSidechannelRequest is the request for the PostUploadPackWithSidechannel rpc.
message PostUploadPackWithSidechannelRequest {
// Repository is the repository on which to operate.
Repository repository = 1 [(target_repository)=true];
// GitConfigOptions are parameters to use with git -c (key=value pairs).
repeated string git_config_options = 2;
// GitProtocol is the git protocol version.
string git_protocol = 3;
}
// PostUploadPackWithSidechannelResponse is the response for the PostUploadPackWithSidechannel rpc.
// This is an empty response since the raw data is transferred to the client via the sidechannel
// exclusively.
message PostUploadPackWithSidechannelResponse {
// Packfile negotiation statistics.
PackfileNegotiationStatistics packfile_negotiation_statistics = 1;
}
// PostReceivePackRequest is the request for the PostReceivePack rpc. It is a stream used to
// transfer the raw data from the client to the servers stdin of git-receive-pack(1) process.
message PostReceivePackRequest {
// Repository is the repository on which to operate.
// It should only be present in the first message of the stream.
Repository repository = 1 [(target_repository)=true];
// Data is the raw data to be copied to stdin of 'git receive-pack'.
bytes data = 2;
// GlID is the GitLab ID of the user. This is used by Git {pre,post}-receive hooks.
// It should only be present in the first message of the stream.
string gl_id = 3;
// GlRepository refers to the GitLab repository. This is used by Git {pre,post}-receive hooks.
// It should only be present in the first message of the stream.
string gl_repository = 4;
// GlID is the GitLab Username of the user. This is used by Git {pre,post}-receive hooks.
// It should only be present in the first message of the stream.
string gl_username = 5;
// GitProtocol is the git protocol version.
string git_protocol = 6;
// GitConfigOptions are parameters to use with git -c (key=value pairs).
repeated string git_config_options = 7;
}
// PostReceivePackResponse is the response for the PostReceivePack rpc. It is a stream used to
// transfer the raw data from the stdout of git-receive-pack(1) from the server to the client.
message PostReceivePackResponse {
// Data is the raw data from the stdout of 'git receive-pack'.
bytes data = 1;
}
|