ref.proto 6.44 KB
Newer Older
1 2 3 4
syntax = "proto3";

package gitaly;

5
import "blob.proto";
Jacob Vosmaer's avatar
Jacob Vosmaer committed
6
import "shared.proto";
7
import "google/protobuf/timestamp.proto";
Jacob Vosmaer's avatar
Jacob Vosmaer committed
8

Andrew Newdigate's avatar
Andrew Newdigate committed
9
service RefService {
10 11 12
  rpc FindDefaultBranchName(FindDefaultBranchNameRequest) returns (FindDefaultBranchNameResponse) {}
  rpc FindAllBranchNames(FindAllBranchNamesRequest) returns (stream FindAllBranchNamesResponse) {}
  rpc FindAllTagNames(FindAllTagNamesRequest) returns (stream FindAllTagNamesResponse) {}
13
  // Find a Ref matching the given constraints. Response may be empty.
Kim Carlbäcker's avatar
Kim Carlbäcker committed
14
  rpc FindRefName(FindRefNameRequest) returns (FindRefNameResponse) {}
15 16
  // Return a stream so we can divide the response in chunks of branches
  rpc FindLocalBranches(FindLocalBranchesRequest) returns (stream FindLocalBranchesResponse) {}
17
  rpc FindAllBranches(FindAllBranchesRequest) returns (stream FindAllBranchesResponse) {}
Ahmad Sherif's avatar
Ahmad Sherif committed
18
  rpc FindAllTags(FindAllTagsRequest) returns (stream FindAllTagsResponse) {}
19
  rpc FindAllRemoteBranches(FindAllRemoteBranchesRequest) returns (stream FindAllRemoteBranchesResponse) {}
Andrew Newdigate's avatar
Andrew Newdigate committed
20
  rpc RefExists(RefExistsRequest) returns (RefExistsResponse) {}
Ahmad Sherif's avatar
Ahmad Sherif committed
21 22
  rpc CreateBranch(CreateBranchRequest) returns (CreateBranchResponse) {}
  rpc DeleteBranch(DeleteBranchRequest) returns (DeleteBranchResponse) {}
Ahmad Sherif's avatar
Ahmad Sherif committed
23
  rpc FindBranch(FindBranchRequest) returns (FindBranchResponse) {}
24
  rpc DeleteRefs(DeleteRefsRequest) returns (DeleteRefsResponse) {}
25

26 27
  rpc ListBranchNamesContainingCommit(ListBranchNamesContainingCommitRequest) returns (stream ListBranchNamesContainingCommitResponse) {}
  rpc ListTagNamesContainingCommit(ListTagNamesContainingCommitRequest) returns (stream ListTagNamesContainingCommitResponse) {}
28 29

  rpc GetTagMessages(GetTagMessagesRequest) returns (stream GetTagMessagesResponse) {}
30 31 32

  // Returns commits that are only reachable from the ref passed
  rpc ListNewCommits(ListNewCommitsRequest) returns (stream ListNewCommitsResponse) {}
33 34 35 36 37 38 39 40 41 42 43 44 45 46

  rpc ListNewBlobs(ListNewBlobsRequest) returns (stream ListNewBlobsResponse) {}
}

message ListNewBlobsRequest {
  Repository repository = 1;
  string commit_id = 2;
  // Limit the number of revs to be returned fro mgit-rev-list
  // If the limit is set to zero, all items will be returned
  uint32 limit = 3;
}

message ListNewBlobsResponse {
  repeated NewBlobObject new_blob_objects = 1;
47 48
}

49
message FindDefaultBranchNameRequest {
50 51 52
  Repository repository = 1;
}

53
message FindDefaultBranchNameResponse {
Kim Carlbäcker's avatar
Kim Carlbäcker committed
54
  bytes name = 1;
55 56
}

57
message FindAllBranchNamesRequest {
58 59 60
  Repository repository = 1;
}

61 62
message FindAllBranchNamesResponse {
  repeated bytes names = 1;
63 64 65 66 67 68 69 70 71
}

message FindAllTagNamesRequest {
  Repository repository = 1;
}

message FindAllTagNamesResponse {
  repeated bytes names = 1;
}
72

73
message FindRefNameRequest {
74
  Repository repository = 1;
75 76 77 78
  // Require that the resulting ref contains this commit as an ancestor
  string commit_id = 2;
  // Example prefix: "refs/heads/". Type bytes because that is the type of ref names.
  bytes prefix = 3;
79 80
}

81 82 83
message FindRefNameResponse {
  // Example name: "refs/heads/master". Cannot assume UTF8, so the type is bytes.
  bytes name = 1;
84
}
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

message FindLocalBranchesRequest {
  Repository repository = 1;
  enum SortBy {
    NAME = 0;
    UPDATED_ASC = 1;
    UPDATED_DESC = 2;
  }
  SortBy sort_by = 2;
}

message FindLocalBranchesResponse {
  repeated FindLocalBranchResponse branches = 1;
}

message FindLocalBranchResponse {
  bytes name = 1;
102 103 104 105 106 107 108 109 110 111
  string commit_id = 2;
  bytes commit_subject = 3;
  FindLocalBranchCommitAuthor commit_author = 4;
  FindLocalBranchCommitAuthor commit_committer = 5;
}

message FindLocalBranchCommitAuthor {
  bytes name = 1;
  bytes email = 2;
  google.protobuf.Timestamp date = 3;
112
}
113 114 115

message FindAllBranchesRequest {
  Repository repository = 1;
116 117 118 119 120
  // Only return branches that are merged into root ref
  bool merged_only = 2;
  // If merged_only is true, this is a list of branches from which we
  // return those merged into the root ref
  repeated bytes merged_branches = 3;
121 122 123 124 125 126 127 128 129
}

message FindAllBranchesResponse {
  message Branch {
    bytes name = 1;
    GitCommit target = 2;
  }
  repeated Branch branches = 1;
}
Ahmad Sherif's avatar
Ahmad Sherif committed
130 131 132 133 134 135 136 137

message FindAllTagsRequest {
  Repository repository = 1;
}

message FindAllTagsResponse {
  repeated Tag tags = 1;
}
Andrew Newdigate's avatar
Andrew Newdigate committed
138 139 140 141 142 143 144 145 146 147

message RefExistsRequest {
  Repository repository = 1;
  // Any ref, e.g. 'refs/heads/master' or 'refs/tags/v1.0.1'. Must start with 'refs/'.
  bytes ref = 2;
}

message RefExistsResponse {
  bool value = 1;
}
Ahmad Sherif's avatar
Ahmad Sherif committed
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172

message CreateBranchRequest {
  Repository repository = 1;
  bytes name = 2;
  bytes start_point = 3;
}

message CreateBranchResponse {
  enum Status {
    OK = 0;
    ERR_EXISTS = 1;
    ERR_INVALID = 2;
    ERR_INVALID_START_POINT = 3;
  }
  Status status = 1;
  Branch branch = 2;
}

message DeleteBranchRequest {
  Repository repository = 1;
  bytes name = 2;
}

// Not clear if we need to do status signaling; we can add fields later.
message DeleteBranchResponse {}
Ahmad Sherif's avatar
Ahmad Sherif committed
173 174 175 176 177 178 179 180 181 182

message FindBranchRequest {
  Repository repository = 1;
  // Name can be 'master' but also 'refs/heads/master'
  bytes name = 2;
}

message FindBranchResponse {
  Branch branch = 1;
}
183 184 185

message DeleteRefsRequest{
  Repository repository = 1;
Ahmad Sherif's avatar
Ahmad Sherif committed
186
  // The following two fields are mutually exclusive
187
  repeated bytes except_with_prefix = 2;
Ahmad Sherif's avatar
Ahmad Sherif committed
188
  repeated bytes refs = 3;
189 190
}

191 192 193
message DeleteRefsResponse {
  string git_error = 1;
}
194 195 196 197

message ListBranchNamesContainingCommitRequest {
  Repository repository = 1;
  string commit_id = 2;
198 199 200 201

  // Limit the number of tag names to be returned
  // If the limit is set to zero, all items will be returned
  uint32 limit = 3;
202 203 204
}

message ListBranchNamesContainingCommitResponse {
205 206
  reserved 1;
  repeated bytes branch_names = 2;
207 208 209 210 211
}

message ListTagNamesContainingCommitRequest {
  Repository repository = 1;
  string commit_id = 2;
212 213 214 215

  // Limit the number of tag names to be returned
  // If the limit is set to zero, all items will be returned
  uint32 limit = 3;
216 217 218
}

message ListTagNamesContainingCommitResponse {
219 220
  reserved 1;
  repeated bytes tag_names = 2;
221
}
222 223

message GetTagMessagesRequest {
224 225 226
  reserved 2;
  reserved "tag_names";

227
  Repository repository = 1;
228
  repeated string tag_ids = 3;
229 230 231
}

message GetTagMessagesResponse {
232 233 234
  reserved 1;
  reserved "tag_name";

235
  bytes message = 2;
236 237
  // Only present for a new tag message
  string tag_id = 3;
238
}
239 240 241 242 243 244 245 246 247

message ListNewCommitsRequest {
  Repository repository = 1;
  string commit_id = 2;
}

message ListNewCommitsResponse {
  repeated GitCommit commits = 1;
}
248 249 250 251 252 253 254 255 256

message FindAllRemoteBranchesRequest {
  Repository repository = 1;
  string remote_name = 2;
}

message FindAllRemoteBranchesResponse {
  repeated Branch branches = 1;
}