v0.10.0 5e05d65

merge_request.pb.go RawHistoryFolder

1// SPDX-License-Identifier: MIT
2
3// Code generated by protoc-gen-go. DO NOT EDIT.
4// versions:
5// 	protoc-gen-go v1.36.12
6// 	protoc        (unknown)
7// source: ermite/merge_request.proto
8
9package ermite
10
11import (
12	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
13	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
14	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
15	reflect "reflect"
16	sync "sync"
17	unsafe "unsafe"
18)
19
20const (
21	// Verify that this generated code is sufficiently up-to-date.
22	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
23	// Verify that runtime/protoimpl is sufficiently up-to-date.
24	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
25)
26
27// MergeRequestState is where a merge request is in its life.
28type MergeRequestState int32
29
30const (
31	// Not set. In ListMergeRequestsRequest.state it means every state. Never
32	// returned by the server.
33	MergeRequestState_MERGE_REQUEST_STATE_UNSPECIFIED MergeRequestState = 0
34	// The merge request awaits review; it can be commented on, merged or closed.
35	MergeRequestState_MERGE_REQUEST_STATE_OPEN MergeRequestState = 1
36	// The source branch was merged into the target. Final.
37	MergeRequestState_MERGE_REQUEST_STATE_MERGED MergeRequestState = 2
38	// The merge request was closed without merging. Final.
39	MergeRequestState_MERGE_REQUEST_STATE_CLOSED MergeRequestState = 3
40)
41
42// Enum value maps for MergeRequestState.
43var (
44	MergeRequestState_name = map[int32]string{
45		0: "MERGE_REQUEST_STATE_UNSPECIFIED",
46		1: "MERGE_REQUEST_STATE_OPEN",
47		2: "MERGE_REQUEST_STATE_MERGED",
48		3: "MERGE_REQUEST_STATE_CLOSED",
49	}
50	MergeRequestState_value = map[string]int32{
51		"MERGE_REQUEST_STATE_UNSPECIFIED": 0,
52		"MERGE_REQUEST_STATE_OPEN":        1,
53		"MERGE_REQUEST_STATE_MERGED":      2,
54		"MERGE_REQUEST_STATE_CLOSED":      3,
55	}
56)
57
58func (x MergeRequestState) Enum() *MergeRequestState {
59	p := new(MergeRequestState)
60	*p = x
61	return p
62}
63
64func (x MergeRequestState) String() string {
65	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
66}
67
68func (MergeRequestState) Descriptor() protoreflect.EnumDescriptor {
69	return file_ermite_merge_request_proto_enumTypes[0].Descriptor()
70}
71
72func (MergeRequestState) Type() protoreflect.EnumType {
73	return &file_ermite_merge_request_proto_enumTypes[0]
74}
75
76func (x MergeRequestState) Number() protoreflect.EnumNumber {
77	return protoreflect.EnumNumber(x)
78}
79
80// Deprecated: Use MergeRequestState.Descriptor instead.
81func (MergeRequestState) EnumDescriptor() ([]byte, []int) {
82	return file_ermite_merge_request_proto_rawDescGZIP(), []int{0}
83}
84
85// DiffSide is the side of a diff a line comment is attached to.
86type DiffSide int32
87
88const (
89	// Not set. On a Comment it means the comment is general, not attached to a
90	// line. In AddCommentRequest it is valid only for a general comment.
91	DiffSide_DIFF_SIDE_UNSPECIFIED DiffSide = 0
92	// The old side: the line is a Line.old_number (a deletion or a context line).
93	DiffSide_DIFF_SIDE_OLD DiffSide = 1
94	// The new side: the line is a Line.new_number (an addition or a context
95	// line).
96	DiffSide_DIFF_SIDE_NEW DiffSide = 2
97)
98
99// Enum value maps for DiffSide.
100var (
101	DiffSide_name = map[int32]string{
102		0: "DIFF_SIDE_UNSPECIFIED",
103		1: "DIFF_SIDE_OLD",
104		2: "DIFF_SIDE_NEW",
105	}
106	DiffSide_value = map[string]int32{
107		"DIFF_SIDE_UNSPECIFIED": 0,
108		"DIFF_SIDE_OLD":         1,
109		"DIFF_SIDE_NEW":         2,
110	}
111)
112
113func (x DiffSide) Enum() *DiffSide {
114	p := new(DiffSide)
115	*p = x
116	return p
117}
118
119func (x DiffSide) String() string {
120	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
121}
122
123func (DiffSide) Descriptor() protoreflect.EnumDescriptor {
124	return file_ermite_merge_request_proto_enumTypes[1].Descriptor()
125}
126
127func (DiffSide) Type() protoreflect.EnumType {
128	return &file_ermite_merge_request_proto_enumTypes[1]
129}
130
131func (x DiffSide) Number() protoreflect.EnumNumber {
132	return protoreflect.EnumNumber(x)
133}
134
135// Deprecated: Use DiffSide.Descriptor instead.
136func (DiffSide) EnumDescriptor() ([]byte, []int) {
137	return file_ermite_merge_request_proto_rawDescGZIP(), []int{1}
138}
139
140// Verdict is the judgement a reviewer gives with a comment.
141type Verdict int32
142
143const (
144	// Not set. The comment carries no verdict. In AddCommentRequest it means a
145	// plain comment.
146	Verdict_VERDICT_UNSPECIFIED Verdict = 0
147	// The reviewer approves the merge request. The comment is created resolved.
148	Verdict_VERDICT_APPROVE Verdict = 1
149	// The reviewer asks for changes. The comment starts unresolved.
150	Verdict_VERDICT_CHANGES_REQUESTED Verdict = 2
151)
152
153// Enum value maps for Verdict.
154var (
155	Verdict_name = map[int32]string{
156		0: "VERDICT_UNSPECIFIED",
157		1: "VERDICT_APPROVE",
158		2: "VERDICT_CHANGES_REQUESTED",
159	}
160	Verdict_value = map[string]int32{
161		"VERDICT_UNSPECIFIED":       0,
162		"VERDICT_APPROVE":           1,
163		"VERDICT_CHANGES_REQUESTED": 2,
164	}
165)
166
167func (x Verdict) Enum() *Verdict {
168	p := new(Verdict)
169	*p = x
170	return p
171}
172
173func (x Verdict) String() string {
174	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
175}
176
177func (Verdict) Descriptor() protoreflect.EnumDescriptor {
178	return file_ermite_merge_request_proto_enumTypes[2].Descriptor()
179}
180
181func (Verdict) Type() protoreflect.EnumType {
182	return &file_ermite_merge_request_proto_enumTypes[2]
183}
184
185func (x Verdict) Number() protoreflect.EnumNumber {
186	return protoreflect.EnumNumber(x)
187}
188
189// Deprecated: Use Verdict.Descriptor instead.
190func (Verdict) EnumDescriptor() ([]byte, []int) {
191	return file_ermite_merge_request_proto_rawDescGZIP(), []int{2}
192}
193
194// MergeabilityState tells whether the head of an open merge request can be
195// merged into its target.
196type MergeabilityState int32
197
198const (
199	// Not set.
200	MergeabilityState_MERGEABILITY_STATE_UNSPECIFIED MergeabilityState = 0
201	// The server has no result yet for the current tips of both branches. It
202	// is replaced by another state when the check completes.
203	MergeabilityState_MERGEABILITY_STATE_CHECKING MergeabilityState = 1
204	// The target is an ancestor of the head: every mode can merge.
205	MergeabilityState_MERGEABILITY_STATE_UP_TO_DATE MergeabilityState = 2
206	// The target has commits the head lacks, but the head merges cleanly:
207	// squash and merge commit can merge, fast-forward cannot.
208	MergeabilityState_MERGEABILITY_STATE_BEHIND MergeabilityState = 3
209	// The head does not merge cleanly into the target, or the branches share no
210	// history: no mode can merge.
211	MergeabilityState_MERGEABILITY_STATE_CONFLICT MergeabilityState = 4
212)
213
214// Enum value maps for MergeabilityState.
215var (
216	MergeabilityState_name = map[int32]string{
217		0: "MERGEABILITY_STATE_UNSPECIFIED",
218		1: "MERGEABILITY_STATE_CHECKING",
219		2: "MERGEABILITY_STATE_UP_TO_DATE",
220		3: "MERGEABILITY_STATE_BEHIND",
221		4: "MERGEABILITY_STATE_CONFLICT",
222	}
223	MergeabilityState_value = map[string]int32{
224		"MERGEABILITY_STATE_UNSPECIFIED": 0,
225		"MERGEABILITY_STATE_CHECKING":    1,
226		"MERGEABILITY_STATE_UP_TO_DATE":  2,
227		"MERGEABILITY_STATE_BEHIND":      3,
228		"MERGEABILITY_STATE_CONFLICT":    4,
229	}
230)
231
232func (x MergeabilityState) Enum() *MergeabilityState {
233	p := new(MergeabilityState)
234	*p = x
235	return p
236}
237
238func (x MergeabilityState) String() string {
239	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
240}
241
242func (MergeabilityState) Descriptor() protoreflect.EnumDescriptor {
243	return file_ermite_merge_request_proto_enumTypes[3].Descriptor()
244}
245
246func (MergeabilityState) Type() protoreflect.EnumType {
247	return &file_ermite_merge_request_proto_enumTypes[3]
248}
249
250func (x MergeabilityState) Number() protoreflect.EnumNumber {
251	return protoreflect.EnumNumber(x)
252}
253
254// Deprecated: Use MergeabilityState.Descriptor instead.
255func (MergeabilityState) EnumDescriptor() ([]byte, []int) {
256	return file_ermite_merge_request_proto_rawDescGZIP(), []int{3}
257}
258
259// Mergeability is the result of checking an open merge request against the
260// tips of its branches.
261type Mergeability struct {
262	state protoimpl.MessageState `protogen:"open.v1"`
263	// State is the result.
264	State MergeabilityState `protobuf:"varint,1,opt,name=state,proto3,enum=ermite.MergeabilityState" json:"state,omitempty"`
265	// TargetId is the commit the target branch pointed to when checked. Empty
266	// while CHECKING.
267	TargetId string `protobuf:"bytes,2,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
268	// HeadId is the commit the source branch pointed to when checked. Empty
269	// while CHECKING.
270	HeadId string `protobuf:"bytes,3,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
271	// Behind is the number of commits of the target that the head lacks. Set
272	// only when state is BEHIND.
273	Behind int32 `protobuf:"varint,4,opt,name=behind,proto3" json:"behind,omitempty"`
274	// BehindCapped says that Behind is a lower bound: the server stops counting
275	// at 1,000.
276	BehindCapped bool `protobuf:"varint,5,opt,name=behind_capped,json=behindCapped,proto3" json:"behind_capped,omitempty"`
277	// ConflictPaths are the paths that conflict, at most 20. Set only when
278	// state is CONFLICT; empty when the branches share no history.
279	ConflictPaths []string `protobuf:"bytes,6,rep,name=conflict_paths,json=conflictPaths,proto3" json:"conflict_paths,omitempty"`
280	// ConflictPathsTruncated says that more paths conflict than listed.
281	ConflictPathsTruncated bool `protobuf:"varint,7,opt,name=conflict_paths_truncated,json=conflictPathsTruncated,proto3" json:"conflict_paths_truncated,omitempty"`
282	// CheckedAt is when the server computed the result. Unset while CHECKING.
283	CheckedAt     *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"`
284	unknownFields protoimpl.UnknownFields
285	sizeCache     protoimpl.SizeCache
286}
287
288func (x *Mergeability) Reset() {
289	*x = Mergeability{}
290	mi := &file_ermite_merge_request_proto_msgTypes[0]
291	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
292	ms.StoreMessageInfo(mi)
293}
294
295func (x *Mergeability) String() string {
296	return protoimpl.X.MessageStringOf(x)
297}
298
299func (*Mergeability) ProtoMessage() {}
300
301func (x *Mergeability) ProtoReflect() protoreflect.Message {
302	mi := &file_ermite_merge_request_proto_msgTypes[0]
303	if x != nil {
304		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
305		if ms.LoadMessageInfo() == nil {
306			ms.StoreMessageInfo(mi)
307		}
308		return ms
309	}
310	return mi.MessageOf(x)
311}
312
313// Deprecated: Use Mergeability.ProtoReflect.Descriptor instead.
314func (*Mergeability) Descriptor() ([]byte, []int) {
315	return file_ermite_merge_request_proto_rawDescGZIP(), []int{0}
316}
317
318func (x *Mergeability) GetState() MergeabilityState {
319	if x != nil {
320		return x.State
321	}
322	return MergeabilityState_MERGEABILITY_STATE_UNSPECIFIED
323}
324
325func (x *Mergeability) GetTargetId() string {
326	if x != nil {
327		return x.TargetId
328	}
329	return ""
330}
331
332func (x *Mergeability) GetHeadId() string {
333	if x != nil {
334		return x.HeadId
335	}
336	return ""
337}
338
339func (x *Mergeability) GetBehind() int32 {
340	if x != nil {
341		return x.Behind
342	}
343	return 0
344}
345
346func (x *Mergeability) GetBehindCapped() bool {
347	if x != nil {
348		return x.BehindCapped
349	}
350	return false
351}
352
353func (x *Mergeability) GetConflictPaths() []string {
354	if x != nil {
355		return x.ConflictPaths
356	}
357	return nil
358}
359
360func (x *Mergeability) GetConflictPathsTruncated() bool {
361	if x != nil {
362		return x.ConflictPathsTruncated
363	}
364	return false
365}
366
367func (x *Mergeability) GetCheckedAt() *timestamppb.Timestamp {
368	if x != nil {
369		return x.CheckedAt
370	}
371	return nil
372}
373
374// MergeRequest asks to merge one branch of a repository into another branch
375// of the same repository. It is about a branch, not about who wrote it.
376type MergeRequest struct {
377	state protoimpl.MessageState `protogen:"open.v1"`
378	// Repo is the name of the repository.
379	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
380	// Number identifies the merge request within its repository, starting at 1
381	// and never reused. It is written "!<number>" in messages and URLs.
382	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
383	// Title is a one-line plain-text title, at most 120 characters.
384	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
385	// Description is a plain-text description, at most 8,000 characters. It may
386	// be empty. Clients show it escaped, with line breaks kept.
387	Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
388	// SourceBranch is the short name of the branch to merge, for example
389	// "feat/x".
390	SourceBranch string `protobuf:"bytes,5,opt,name=source_branch,json=sourceBranch,proto3" json:"source_branch,omitempty"`
391	// TargetBranch is the short name of the branch to merge into, for example
392	// "main".
393	TargetBranch string `protobuf:"bytes,6,opt,name=target_branch,json=targetBranch,proto3" json:"target_branch,omitempty"`
394	// State is where the merge request is in its life.
395	State MergeRequestState `protobuf:"varint,7,opt,name=state,proto3,enum=ermite.MergeRequestState" json:"state,omitempty"`
396	// Author names who created the merge request: the label of the token that
397	// was used, "root" for the root token, or "owner" for a web session. It is
398	// informational: labels are not unique and the token may be gone.
399	Author string `protobuf:"bytes,8,opt,name=author,proto3" json:"author,omitempty"`
400	// CreatedAt is when the merge request was created.
401	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
402	// UpdatedAt is when the merge request last changed: title, description,
403	// state, or a comment added or resolved. Pushes to the source branch do not
404	// change it.
405	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
406	// HeadId is the id of the commit the source branch points to. While the
407	// merge request is open it is read from Git at every call, so it changes
408	// when the branch is pushed; it is empty if the branch was deleted. Once
409	// merged or closed it is the head at that moment.
410	HeadId string `protobuf:"bytes,11,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
411	// MergedCommitId is the id of the commit the target branch points to after
412	// the merge: the head for a fast-forward, the new commit for a squash or a
413	// merge commit.
414	// Empty unless state is MERGED.
415	MergedCommitId string `protobuf:"bytes,12,opt,name=merged_commit_id,json=mergedCommitId,proto3" json:"merged_commit_id,omitempty"`
416	// MergeMode is how the merge request was merged. MERGE_MODE_UNSPECIFIED
417	// unless state is MERGED.
418	MergeMode MergeMode `protobuf:"varint,13,opt,name=merge_mode,json=mergeMode,proto3,enum=ermite.MergeMode" json:"merge_mode,omitempty"`
419	// Mergeability tells whether the head can be merged into the target. Set
420	// while the merge request is OPEN, with state CHECKING until the server has
421	// a result for the current tips; never set once merged or closed. It is a
422	// hint: MergeMergeRequest checks again. Set only by servers with the
423	// "merge_requests.mergeability" feature.
424	Mergeability  *Mergeability `protobuf:"bytes,14,opt,name=mergeability,proto3" json:"mergeability,omitempty"`
425	unknownFields protoimpl.UnknownFields
426	sizeCache     protoimpl.SizeCache
427}
428
429func (x *MergeRequest) Reset() {
430	*x = MergeRequest{}
431	mi := &file_ermite_merge_request_proto_msgTypes[1]
432	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
433	ms.StoreMessageInfo(mi)
434}
435
436func (x *MergeRequest) String() string {
437	return protoimpl.X.MessageStringOf(x)
438}
439
440func (*MergeRequest) ProtoMessage() {}
441
442func (x *MergeRequest) ProtoReflect() protoreflect.Message {
443	mi := &file_ermite_merge_request_proto_msgTypes[1]
444	if x != nil {
445		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
446		if ms.LoadMessageInfo() == nil {
447			ms.StoreMessageInfo(mi)
448		}
449		return ms
450	}
451	return mi.MessageOf(x)
452}
453
454// Deprecated: Use MergeRequest.ProtoReflect.Descriptor instead.
455func (*MergeRequest) Descriptor() ([]byte, []int) {
456	return file_ermite_merge_request_proto_rawDescGZIP(), []int{1}
457}
458
459func (x *MergeRequest) GetRepo() string {
460	if x != nil {
461		return x.Repo
462	}
463	return ""
464}
465
466func (x *MergeRequest) GetNumber() int64 {
467	if x != nil {
468		return x.Number
469	}
470	return 0
471}
472
473func (x *MergeRequest) GetTitle() string {
474	if x != nil {
475		return x.Title
476	}
477	return ""
478}
479
480func (x *MergeRequest) GetDescription() string {
481	if x != nil {
482		return x.Description
483	}
484	return ""
485}
486
487func (x *MergeRequest) GetSourceBranch() string {
488	if x != nil {
489		return x.SourceBranch
490	}
491	return ""
492}
493
494func (x *MergeRequest) GetTargetBranch() string {
495	if x != nil {
496		return x.TargetBranch
497	}
498	return ""
499}
500
501func (x *MergeRequest) GetState() MergeRequestState {
502	if x != nil {
503		return x.State
504	}
505	return MergeRequestState_MERGE_REQUEST_STATE_UNSPECIFIED
506}
507
508func (x *MergeRequest) GetAuthor() string {
509	if x != nil {
510		return x.Author
511	}
512	return ""
513}
514
515func (x *MergeRequest) GetCreatedAt() *timestamppb.Timestamp {
516	if x != nil {
517		return x.CreatedAt
518	}
519	return nil
520}
521
522func (x *MergeRequest) GetUpdatedAt() *timestamppb.Timestamp {
523	if x != nil {
524		return x.UpdatedAt
525	}
526	return nil
527}
528
529func (x *MergeRequest) GetHeadId() string {
530	if x != nil {
531		return x.HeadId
532	}
533	return ""
534}
535
536func (x *MergeRequest) GetMergedCommitId() string {
537	if x != nil {
538		return x.MergedCommitId
539	}
540	return ""
541}
542
543func (x *MergeRequest) GetMergeMode() MergeMode {
544	if x != nil {
545		return x.MergeMode
546	}
547	return MergeMode_MERGE_MODE_UNSPECIFIED
548}
549
550func (x *MergeRequest) GetMergeability() *Mergeability {
551	if x != nil {
552		return x.Mergeability
553	}
554	return nil
555}
556
557// Comment is a note on a merge request, either general or attached to a line
558// of its diff.
559type Comment struct {
560	state protoimpl.MessageState `protogen:"open.v1"`
561	// Id identifies the comment within its merge request. Opaque.
562	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
563	// Author names who wrote the comment, like MergeRequest.author.
564	Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"`
565	// Path is the path of the commented file in the diff (the new path, or the
566	// old path of a deleted file). Empty for a general comment.
567	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
568	// Line is the 1-based line number on side. 0 for a general comment.
569	Line int32 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
570	// Side tells whether line counts on the old or the new side of the diff.
571	// DIFF_SIDE_UNSPECIFIED for a general comment.
572	Side DiffSide `protobuf:"varint,5,opt,name=side,proto3,enum=ermite.DiffSide" json:"side,omitempty"`
573	// CommitId is the head of the merge request when the comment was written.
574	// When it differs from the current head the line may have moved; clients
575	// may show the comment as outdated.
576	CommitId string `protobuf:"bytes,6,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
577	// Text is the Markdown source, at most 8,000 characters. Clients render it
578	// as Markdown without raw HTML; "^<id>" refers to a note of the same merge
579	// request. Empty when deleted is true, and possibly empty for a comment
580	// that carries a verdict.
581	Text string `protobuf:"bytes,7,opt,name=text,proto3" json:"text,omitempty"`
582	// Resolved is true once the comment was marked resolved.
583	Resolved bool `protobuf:"varint,8,opt,name=resolved,proto3" json:"resolved,omitempty"`
584	// CreatedAt is when the comment was written.
585	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
586	// ReplyTo is the id of the root comment this comment replies to. Empty for
587	// a root comment. A reply has the path, line, start_line and side of its
588	// root, and its commit_id is the head when the reply was written. Threads
589	// have one level: a reply never has replies.
590	ReplyTo string `protobuf:"bytes,10,opt,name=reply_to,json=replyTo,proto3" json:"reply_to,omitempty"`
591	// StartLine is the 1-based first line of a range that ends at line, on the
592	// same side. 0 for a comment on a single line or a general comment.
593	StartLine int32 `protobuf:"varint,11,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
594	// Verdict is the judgement given with the comment. Only a root comment has
595	// one; it never changes after creation.
596	Verdict Verdict `protobuf:"varint,12,opt,name=verdict,proto3,enum=ermite.Verdict" json:"verdict,omitempty"`
597	// EditedAt is when the text was last changed or the comment was deleted.
598	// Unset if it never was.
599	EditedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=edited_at,json=editedAt,proto3" json:"edited_at,omitempty"`
600	// Deleted is true once the author deleted the comment. Its text is then
601	// empty; its id, anchor, replies and verdict remain.
602	Deleted       bool `protobuf:"varint,14,opt,name=deleted,proto3" json:"deleted,omitempty"`
603	unknownFields protoimpl.UnknownFields
604	sizeCache     protoimpl.SizeCache
605}
606
607func (x *Comment) Reset() {
608	*x = Comment{}
609	mi := &file_ermite_merge_request_proto_msgTypes[2]
610	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
611	ms.StoreMessageInfo(mi)
612}
613
614func (x *Comment) String() string {
615	return protoimpl.X.MessageStringOf(x)
616}
617
618func (*Comment) ProtoMessage() {}
619
620func (x *Comment) ProtoReflect() protoreflect.Message {
621	mi := &file_ermite_merge_request_proto_msgTypes[2]
622	if x != nil {
623		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
624		if ms.LoadMessageInfo() == nil {
625			ms.StoreMessageInfo(mi)
626		}
627		return ms
628	}
629	return mi.MessageOf(x)
630}
631
632// Deprecated: Use Comment.ProtoReflect.Descriptor instead.
633func (*Comment) Descriptor() ([]byte, []int) {
634	return file_ermite_merge_request_proto_rawDescGZIP(), []int{2}
635}
636
637func (x *Comment) GetId() string {
638	if x != nil {
639		return x.Id
640	}
641	return ""
642}
643
644func (x *Comment) GetAuthor() string {
645	if x != nil {
646		return x.Author
647	}
648	return ""
649}
650
651func (x *Comment) GetPath() string {
652	if x != nil {
653		return x.Path
654	}
655	return ""
656}
657
658func (x *Comment) GetLine() int32 {
659	if x != nil {
660		return x.Line
661	}
662	return 0
663}
664
665func (x *Comment) GetSide() DiffSide {
666	if x != nil {
667		return x.Side
668	}
669	return DiffSide_DIFF_SIDE_UNSPECIFIED
670}
671
672func (x *Comment) GetCommitId() string {
673	if x != nil {
674		return x.CommitId
675	}
676	return ""
677}
678
679func (x *Comment) GetText() string {
680	if x != nil {
681		return x.Text
682	}
683	return ""
684}
685
686func (x *Comment) GetResolved() bool {
687	if x != nil {
688		return x.Resolved
689	}
690	return false
691}
692
693func (x *Comment) GetCreatedAt() *timestamppb.Timestamp {
694	if x != nil {
695		return x.CreatedAt
696	}
697	return nil
698}
699
700func (x *Comment) GetReplyTo() string {
701	if x != nil {
702		return x.ReplyTo
703	}
704	return ""
705}
706
707func (x *Comment) GetStartLine() int32 {
708	if x != nil {
709		return x.StartLine
710	}
711	return 0
712}
713
714func (x *Comment) GetVerdict() Verdict {
715	if x != nil {
716		return x.Verdict
717	}
718	return Verdict_VERDICT_UNSPECIFIED
719}
720
721func (x *Comment) GetEditedAt() *timestamppb.Timestamp {
722	if x != nil {
723		return x.EditedAt
724	}
725	return nil
726}
727
728func (x *Comment) GetDeleted() bool {
729	if x != nil {
730		return x.Deleted
731	}
732	return false
733}
734
735// AuthorVerdict is the current verdict of one author on a merge request: the
736// one given with the author's latest comment that carries a verdict.
737type AuthorVerdict struct {
738	state protoimpl.MessageState `protogen:"open.v1"`
739	// Author names who gave the verdict, like Comment.author.
740	Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
741	// Verdict is the current verdict. Never VERDICT_UNSPECIFIED.
742	Verdict Verdict `protobuf:"varint,2,opt,name=verdict,proto3,enum=ermite.Verdict" json:"verdict,omitempty"`
743	// CommentId is the id of the comment that carries the verdict.
744	CommentId string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
745	// CommitId is the head of the merge request when the verdict was given.
746	CommitId string `protobuf:"bytes,4,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
747	// CreatedAt is when the verdict was given.
748	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
749	// Stale is true for an approval given on a commit that is not the current
750	// head. A request for changes is never stale.
751	Stale         bool `protobuf:"varint,6,opt,name=stale,proto3" json:"stale,omitempty"`
752	unknownFields protoimpl.UnknownFields
753	sizeCache     protoimpl.SizeCache
754}
755
756func (x *AuthorVerdict) Reset() {
757	*x = AuthorVerdict{}
758	mi := &file_ermite_merge_request_proto_msgTypes[3]
759	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
760	ms.StoreMessageInfo(mi)
761}
762
763func (x *AuthorVerdict) String() string {
764	return protoimpl.X.MessageStringOf(x)
765}
766
767func (*AuthorVerdict) ProtoMessage() {}
768
769func (x *AuthorVerdict) ProtoReflect() protoreflect.Message {
770	mi := &file_ermite_merge_request_proto_msgTypes[3]
771	if x != nil {
772		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
773		if ms.LoadMessageInfo() == nil {
774			ms.StoreMessageInfo(mi)
775		}
776		return ms
777	}
778	return mi.MessageOf(x)
779}
780
781// Deprecated: Use AuthorVerdict.ProtoReflect.Descriptor instead.
782func (*AuthorVerdict) Descriptor() ([]byte, []int) {
783	return file_ermite_merge_request_proto_rawDescGZIP(), []int{3}
784}
785
786func (x *AuthorVerdict) GetAuthor() string {
787	if x != nil {
788		return x.Author
789	}
790	return ""
791}
792
793func (x *AuthorVerdict) GetVerdict() Verdict {
794	if x != nil {
795		return x.Verdict
796	}
797	return Verdict_VERDICT_UNSPECIFIED
798}
799
800func (x *AuthorVerdict) GetCommentId() string {
801	if x != nil {
802		return x.CommentId
803	}
804	return ""
805}
806
807func (x *AuthorVerdict) GetCommitId() string {
808	if x != nil {
809		return x.CommitId
810	}
811	return ""
812}
813
814func (x *AuthorVerdict) GetCreatedAt() *timestamppb.Timestamp {
815	if x != nil {
816		return x.CreatedAt
817	}
818	return nil
819}
820
821func (x *AuthorVerdict) GetStale() bool {
822	if x != nil {
823		return x.Stale
824	}
825	return false
826}
827
828// CreateMergeRequestRequest describes the merge request to open.
829type CreateMergeRequestRequest struct {
830	state protoimpl.MessageState `protogen:"open.v1"`
831	// Repo is the repository name.
832	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
833	// Title is the one-line title. Required.
834	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
835	// Description is the optional description.
836	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
837	// SourceBranch is the short name of the branch to merge. Required; the
838	// branch must exist.
839	SourceBranch string `protobuf:"bytes,4,opt,name=source_branch,json=sourceBranch,proto3" json:"source_branch,omitempty"`
840	// TargetBranch is the short name of the branch to merge into. Empty means
841	// the default branch of the repository. The branch must exist and differ
842	// from source_branch.
843	TargetBranch  string `protobuf:"bytes,5,opt,name=target_branch,json=targetBranch,proto3" json:"target_branch,omitempty"`
844	unknownFields protoimpl.UnknownFields
845	sizeCache     protoimpl.SizeCache
846}
847
848func (x *CreateMergeRequestRequest) Reset() {
849	*x = CreateMergeRequestRequest{}
850	mi := &file_ermite_merge_request_proto_msgTypes[4]
851	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
852	ms.StoreMessageInfo(mi)
853}
854
855func (x *CreateMergeRequestRequest) String() string {
856	return protoimpl.X.MessageStringOf(x)
857}
858
859func (*CreateMergeRequestRequest) ProtoMessage() {}
860
861func (x *CreateMergeRequestRequest) ProtoReflect() protoreflect.Message {
862	mi := &file_ermite_merge_request_proto_msgTypes[4]
863	if x != nil {
864		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
865		if ms.LoadMessageInfo() == nil {
866			ms.StoreMessageInfo(mi)
867		}
868		return ms
869	}
870	return mi.MessageOf(x)
871}
872
873// Deprecated: Use CreateMergeRequestRequest.ProtoReflect.Descriptor instead.
874func (*CreateMergeRequestRequest) Descriptor() ([]byte, []int) {
875	return file_ermite_merge_request_proto_rawDescGZIP(), []int{4}
876}
877
878func (x *CreateMergeRequestRequest) GetRepo() string {
879	if x != nil {
880		return x.Repo
881	}
882	return ""
883}
884
885func (x *CreateMergeRequestRequest) GetTitle() string {
886	if x != nil {
887		return x.Title
888	}
889	return ""
890}
891
892func (x *CreateMergeRequestRequest) GetDescription() string {
893	if x != nil {
894		return x.Description
895	}
896	return ""
897}
898
899func (x *CreateMergeRequestRequest) GetSourceBranch() string {
900	if x != nil {
901		return x.SourceBranch
902	}
903	return ""
904}
905
906func (x *CreateMergeRequestRequest) GetTargetBranch() string {
907	if x != nil {
908		return x.TargetBranch
909	}
910	return ""
911}
912
913// CreateMergeRequestResponse holds the new merge request.
914type CreateMergeRequestResponse struct {
915	state protoimpl.MessageState `protogen:"open.v1"`
916	// MergeRequest is the created merge request.
917	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
918	unknownFields protoimpl.UnknownFields
919	sizeCache     protoimpl.SizeCache
920}
921
922func (x *CreateMergeRequestResponse) Reset() {
923	*x = CreateMergeRequestResponse{}
924	mi := &file_ermite_merge_request_proto_msgTypes[5]
925	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
926	ms.StoreMessageInfo(mi)
927}
928
929func (x *CreateMergeRequestResponse) String() string {
930	return protoimpl.X.MessageStringOf(x)
931}
932
933func (*CreateMergeRequestResponse) ProtoMessage() {}
934
935func (x *CreateMergeRequestResponse) ProtoReflect() protoreflect.Message {
936	mi := &file_ermite_merge_request_proto_msgTypes[5]
937	if x != nil {
938		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
939		if ms.LoadMessageInfo() == nil {
940			ms.StoreMessageInfo(mi)
941		}
942		return ms
943	}
944	return mi.MessageOf(x)
945}
946
947// Deprecated: Use CreateMergeRequestResponse.ProtoReflect.Descriptor instead.
948func (*CreateMergeRequestResponse) Descriptor() ([]byte, []int) {
949	return file_ermite_merge_request_proto_rawDescGZIP(), []int{5}
950}
951
952func (x *CreateMergeRequestResponse) GetMergeRequest() *MergeRequest {
953	if x != nil {
954		return x.MergeRequest
955	}
956	return nil
957}
958
959// ListMergeRequestsRequest selects a page of merge requests.
960type ListMergeRequestsRequest struct {
961	state protoimpl.MessageState `protogen:"open.v1"`
962	// Repo is the repository name.
963	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
964	// State restricts the result to one state. MERGE_REQUEST_STATE_UNSPECIFIED
965	// means every state.
966	State MergeRequestState `protobuf:"varint,2,opt,name=state,proto3,enum=ermite.MergeRequestState" json:"state,omitempty"`
967	// PageSize is the maximum number of merge requests to return. 0 means the
968	// server default; values above the server maximum are lowered to it.
969	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
970	// PageToken is the next_page_token of a previous response, to continue the
971	// same listing. Empty for the first page. Other fields must be unchanged.
972	PageToken     string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
973	unknownFields protoimpl.UnknownFields
974	sizeCache     protoimpl.SizeCache
975}
976
977func (x *ListMergeRequestsRequest) Reset() {
978	*x = ListMergeRequestsRequest{}
979	mi := &file_ermite_merge_request_proto_msgTypes[6]
980	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
981	ms.StoreMessageInfo(mi)
982}
983
984func (x *ListMergeRequestsRequest) String() string {
985	return protoimpl.X.MessageStringOf(x)
986}
987
988func (*ListMergeRequestsRequest) ProtoMessage() {}
989
990func (x *ListMergeRequestsRequest) ProtoReflect() protoreflect.Message {
991	mi := &file_ermite_merge_request_proto_msgTypes[6]
992	if x != nil {
993		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
994		if ms.LoadMessageInfo() == nil {
995			ms.StoreMessageInfo(mi)
996		}
997		return ms
998	}
999	return mi.MessageOf(x)
1000}
1001
1002// Deprecated: Use ListMergeRequestsRequest.ProtoReflect.Descriptor instead.
1003func (*ListMergeRequestsRequest) Descriptor() ([]byte, []int) {
1004	return file_ermite_merge_request_proto_rawDescGZIP(), []int{6}
1005}
1006
1007func (x *ListMergeRequestsRequest) GetRepo() string {
1008	if x != nil {
1009		return x.Repo
1010	}
1011	return ""
1012}
1013
1014func (x *ListMergeRequestsRequest) GetState() MergeRequestState {
1015	if x != nil {
1016		return x.State
1017	}
1018	return MergeRequestState_MERGE_REQUEST_STATE_UNSPECIFIED
1019}
1020
1021func (x *ListMergeRequestsRequest) GetPageSize() int32 {
1022	if x != nil {
1023		return x.PageSize
1024	}
1025	return 0
1026}
1027
1028func (x *ListMergeRequestsRequest) GetPageToken() string {
1029	if x != nil {
1030		return x.PageToken
1031	}
1032	return ""
1033}
1034
1035// ListMergeRequestsResponse is one page of merge requests.
1036type ListMergeRequestsResponse struct {
1037	state protoimpl.MessageState `protogen:"open.v1"`
1038	// MergeRequests are the merge requests of this page, highest number first.
1039	MergeRequests []*MergeRequest `protobuf:"bytes,1,rep,name=merge_requests,json=mergeRequests,proto3" json:"merge_requests,omitempty"`
1040	// NextPageToken is passed as page_token to get the next page. Empty when
1041	// there is no next page.
1042	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1043	unknownFields protoimpl.UnknownFields
1044	sizeCache     protoimpl.SizeCache
1045}
1046
1047func (x *ListMergeRequestsResponse) Reset() {
1048	*x = ListMergeRequestsResponse{}
1049	mi := &file_ermite_merge_request_proto_msgTypes[7]
1050	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1051	ms.StoreMessageInfo(mi)
1052}
1053
1054func (x *ListMergeRequestsResponse) String() string {
1055	return protoimpl.X.MessageStringOf(x)
1056}
1057
1058func (*ListMergeRequestsResponse) ProtoMessage() {}
1059
1060func (x *ListMergeRequestsResponse) ProtoReflect() protoreflect.Message {
1061	mi := &file_ermite_merge_request_proto_msgTypes[7]
1062	if x != nil {
1063		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1064		if ms.LoadMessageInfo() == nil {
1065			ms.StoreMessageInfo(mi)
1066		}
1067		return ms
1068	}
1069	return mi.MessageOf(x)
1070}
1071
1072// Deprecated: Use ListMergeRequestsResponse.ProtoReflect.Descriptor instead.
1073func (*ListMergeRequestsResponse) Descriptor() ([]byte, []int) {
1074	return file_ermite_merge_request_proto_rawDescGZIP(), []int{7}
1075}
1076
1077func (x *ListMergeRequestsResponse) GetMergeRequests() []*MergeRequest {
1078	if x != nil {
1079		return x.MergeRequests
1080	}
1081	return nil
1082}
1083
1084func (x *ListMergeRequestsResponse) GetNextPageToken() string {
1085	if x != nil {
1086		return x.NextPageToken
1087	}
1088	return ""
1089}
1090
1091// GetMergeRequestRequest selects a merge request.
1092type GetMergeRequestRequest struct {
1093	state protoimpl.MessageState `protogen:"open.v1"`
1094	// Repo is the repository name.
1095	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1096	// Number is the merge request number.
1097	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1098	// SinceLastRead asks for the diff between the head recorded by MarkRead and
1099	// the current head instead of the diff against the target. It works after a
1100	// force-push as long as the recorded commit still exists in the repository.
1101	// When nothing was marked read, or the recorded commit is gone, the response
1102	// holds the diff against the target and says so in last_read_id and
1103	// last_read_lost.
1104	SinceLastRead bool `protobuf:"varint,3,opt,name=since_last_read,json=sinceLastRead,proto3" json:"since_last_read,omitempty"`
1105	unknownFields protoimpl.UnknownFields
1106	sizeCache     protoimpl.SizeCache
1107}
1108
1109func (x *GetMergeRequestRequest) Reset() {
1110	*x = GetMergeRequestRequest{}
1111	mi := &file_ermite_merge_request_proto_msgTypes[8]
1112	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1113	ms.StoreMessageInfo(mi)
1114}
1115
1116func (x *GetMergeRequestRequest) String() string {
1117	return protoimpl.X.MessageStringOf(x)
1118}
1119
1120func (*GetMergeRequestRequest) ProtoMessage() {}
1121
1122func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {
1123	mi := &file_ermite_merge_request_proto_msgTypes[8]
1124	if x != nil {
1125		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1126		if ms.LoadMessageInfo() == nil {
1127			ms.StoreMessageInfo(mi)
1128		}
1129		return ms
1130	}
1131	return mi.MessageOf(x)
1132}
1133
1134// Deprecated: Use GetMergeRequestRequest.ProtoReflect.Descriptor instead.
1135func (*GetMergeRequestRequest) Descriptor() ([]byte, []int) {
1136	return file_ermite_merge_request_proto_rawDescGZIP(), []int{8}
1137}
1138
1139func (x *GetMergeRequestRequest) GetRepo() string {
1140	if x != nil {
1141		return x.Repo
1142	}
1143	return ""
1144}
1145
1146func (x *GetMergeRequestRequest) GetNumber() int64 {
1147	if x != nil {
1148		return x.Number
1149	}
1150	return 0
1151}
1152
1153func (x *GetMergeRequestRequest) GetSinceLastRead() bool {
1154	if x != nil {
1155		return x.SinceLastRead
1156	}
1157	return false
1158}
1159
1160// GetMergeRequestResponse holds a merge request with its review data.
1161type GetMergeRequestResponse struct {
1162	state protoimpl.MessageState `protogen:"open.v1"`
1163	// MergeRequest is the merge request.
1164	MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1165	// Commits are the commits of the head that are not in the target
1166	// ("target..head"), newest first. At most 100 are returned (a server limit
1167	// that may change; rely on commits_truncated, not on the number). Empty when
1168	// the source branch was deleted.
1169	Commits []*Commit `protobuf:"bytes,2,rep,name=commits,proto3" json:"commits,omitempty"`
1170	// CommitsTruncated is true when the branch has more commits than commits
1171	// holds.
1172	CommitsTruncated bool `protobuf:"varint,3,opt,name=commits_truncated,json=commitsTruncated,proto3" json:"commits_truncated,omitempty"`
1173	// DiffBaseId is the id of the commit the diff compares from: the merge base
1174	// of the target and the head, or the last read head when since_last_read
1175	// applied. Empty when the source branch was deleted; diff is then empty.
1176	DiffBaseId string `protobuf:"bytes,4,opt,name=diff_base_id,json=diffBaseId,proto3" json:"diff_base_id,omitempty"`
1177	// Stats are the totals of the diff, including files that it omits or
1178	// truncates.
1179	Stats *DiffStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"`
1180	// Diff is the structured diff from diff_base_id to the head, with the same
1181	// limits and truncated flags as GetCommitResponse.diff.
1182	Diff *Diff `protobuf:"bytes,6,opt,name=diff,proto3" json:"diff,omitempty"`
1183	// Comments are every comment of the merge request, oldest first.
1184	Comments []*Comment `protobuf:"bytes,7,rep,name=comments,proto3" json:"comments,omitempty"`
1185	// LastReadId is the head recorded by MarkRead, whether or not
1186	// since_last_read was set. Empty when nothing was marked read.
1187	LastReadId string `protobuf:"bytes,8,opt,name=last_read_id,json=lastReadId,proto3" json:"last_read_id,omitempty"`
1188	// LastReadLost is true when since_last_read was set, a head was recorded,
1189	// but that commit no longer exists in the repository: the diff is then the
1190	// diff against the target. A client should tell the reader to review the
1191	// whole change again.
1192	LastReadLost bool `protobuf:"varint,9,opt,name=last_read_lost,json=lastReadLost,proto3" json:"last_read_lost,omitempty"`
1193	// Verdicts are the current verdicts, one per author who gave one, ordered
1194	// by the comment that carries them, oldest first.
1195	Verdicts      []*AuthorVerdict `protobuf:"bytes,10,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
1196	unknownFields protoimpl.UnknownFields
1197	sizeCache     protoimpl.SizeCache
1198}
1199
1200func (x *GetMergeRequestResponse) Reset() {
1201	*x = GetMergeRequestResponse{}
1202	mi := &file_ermite_merge_request_proto_msgTypes[9]
1203	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1204	ms.StoreMessageInfo(mi)
1205}
1206
1207func (x *GetMergeRequestResponse) String() string {
1208	return protoimpl.X.MessageStringOf(x)
1209}
1210
1211func (*GetMergeRequestResponse) ProtoMessage() {}
1212
1213func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {
1214	mi := &file_ermite_merge_request_proto_msgTypes[9]
1215	if x != nil {
1216		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1217		if ms.LoadMessageInfo() == nil {
1218			ms.StoreMessageInfo(mi)
1219		}
1220		return ms
1221	}
1222	return mi.MessageOf(x)
1223}
1224
1225// Deprecated: Use GetMergeRequestResponse.ProtoReflect.Descriptor instead.
1226func (*GetMergeRequestResponse) Descriptor() ([]byte, []int) {
1227	return file_ermite_merge_request_proto_rawDescGZIP(), []int{9}
1228}
1229
1230func (x *GetMergeRequestResponse) GetMergeRequest() *MergeRequest {
1231	if x != nil {
1232		return x.MergeRequest
1233	}
1234	return nil
1235}
1236
1237func (x *GetMergeRequestResponse) GetCommits() []*Commit {
1238	if x != nil {
1239		return x.Commits
1240	}
1241	return nil
1242}
1243
1244func (x *GetMergeRequestResponse) GetCommitsTruncated() bool {
1245	if x != nil {
1246		return x.CommitsTruncated
1247	}
1248	return false
1249}
1250
1251func (x *GetMergeRequestResponse) GetDiffBaseId() string {
1252	if x != nil {
1253		return x.DiffBaseId
1254	}
1255	return ""
1256}
1257
1258func (x *GetMergeRequestResponse) GetStats() *DiffStats {
1259	if x != nil {
1260		return x.Stats
1261	}
1262	return nil
1263}
1264
1265func (x *GetMergeRequestResponse) GetDiff() *Diff {
1266	if x != nil {
1267		return x.Diff
1268	}
1269	return nil
1270}
1271
1272func (x *GetMergeRequestResponse) GetComments() []*Comment {
1273	if x != nil {
1274		return x.Comments
1275	}
1276	return nil
1277}
1278
1279func (x *GetMergeRequestResponse) GetLastReadId() string {
1280	if x != nil {
1281		return x.LastReadId
1282	}
1283	return ""
1284}
1285
1286func (x *GetMergeRequestResponse) GetLastReadLost() bool {
1287	if x != nil {
1288		return x.LastReadLost
1289	}
1290	return false
1291}
1292
1293func (x *GetMergeRequestResponse) GetVerdicts() []*AuthorVerdict {
1294	if x != nil {
1295		return x.Verdicts
1296	}
1297	return nil
1298}
1299
1300// AddCommentRequest describes the comment to add.
1301type AddCommentRequest struct {
1302	state protoimpl.MessageState `protogen:"open.v1"`
1303	// Repo is the repository name.
1304	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1305	// Number is the merge request number.
1306	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1307	// Path is the file the comment is attached to, as given by the diff of the
1308	// merge request: FileDiff.new_path, or old_path for a deleted file. Empty
1309	// for a general comment; then line must be 0 and side unspecified.
1310	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
1311	// Line is the 1-based line number on side. It must be the old_number or
1312	// new_number of a Line of a hunk of the file; a line outside the hunks is
1313	// invalid_argument. 0 for a general comment.
1314	Line int32 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
1315	// Side is the side line counts on. Required when path is set.
1316	Side DiffSide `protobuf:"varint,5,opt,name=side,proto3,enum=ermite.DiffSide" json:"side,omitempty"`
1317	// Text is the Markdown source. Required, except when verdict is set.
1318	Text string `protobuf:"bytes,6,opt,name=text,proto3" json:"text,omitempty"`
1319	// ReplyTo is the id of the root comment to reply to. Empty for a new root
1320	// comment. A reply takes the anchor of its root: path, line, start_line,
1321	// side and verdict must then be unset.
1322	ReplyTo string `protobuf:"bytes,7,opt,name=reply_to,json=replyTo,proto3" json:"reply_to,omitempty"`
1323	// StartLine is the 1-based first line of a range ending at line. 0 for a
1324	// single line. Needs path; it must be lower than line, and both ends must
1325	// be lines of the diff on side.
1326	StartLine int32 `protobuf:"varint,8,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
1327	// Verdict is the judgement to give. Needs the mr:review scope and a root
1328	// comment. VERDICT_UNSPECIFIED for a plain comment.
1329	Verdict       Verdict `protobuf:"varint,9,opt,name=verdict,proto3,enum=ermite.Verdict" json:"verdict,omitempty"`
1330	unknownFields protoimpl.UnknownFields
1331	sizeCache     protoimpl.SizeCache
1332}
1333
1334func (x *AddCommentRequest) Reset() {
1335	*x = AddCommentRequest{}
1336	mi := &file_ermite_merge_request_proto_msgTypes[10]
1337	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1338	ms.StoreMessageInfo(mi)
1339}
1340
1341func (x *AddCommentRequest) String() string {
1342	return protoimpl.X.MessageStringOf(x)
1343}
1344
1345func (*AddCommentRequest) ProtoMessage() {}
1346
1347func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {
1348	mi := &file_ermite_merge_request_proto_msgTypes[10]
1349	if x != nil {
1350		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1351		if ms.LoadMessageInfo() == nil {
1352			ms.StoreMessageInfo(mi)
1353		}
1354		return ms
1355	}
1356	return mi.MessageOf(x)
1357}
1358
1359// Deprecated: Use AddCommentRequest.ProtoReflect.Descriptor instead.
1360func (*AddCommentRequest) Descriptor() ([]byte, []int) {
1361	return file_ermite_merge_request_proto_rawDescGZIP(), []int{10}
1362}
1363
1364func (x *AddCommentRequest) GetRepo() string {
1365	if x != nil {
1366		return x.Repo
1367	}
1368	return ""
1369}
1370
1371func (x *AddCommentRequest) GetNumber() int64 {
1372	if x != nil {
1373		return x.Number
1374	}
1375	return 0
1376}
1377
1378func (x *AddCommentRequest) GetPath() string {
1379	if x != nil {
1380		return x.Path
1381	}
1382	return ""
1383}
1384
1385func (x *AddCommentRequest) GetLine() int32 {
1386	if x != nil {
1387		return x.Line
1388	}
1389	return 0
1390}
1391
1392func (x *AddCommentRequest) GetSide() DiffSide {
1393	if x != nil {
1394		return x.Side
1395	}
1396	return DiffSide_DIFF_SIDE_UNSPECIFIED
1397}
1398
1399func (x *AddCommentRequest) GetText() string {
1400	if x != nil {
1401		return x.Text
1402	}
1403	return ""
1404}
1405
1406func (x *AddCommentRequest) GetReplyTo() string {
1407	if x != nil {
1408		return x.ReplyTo
1409	}
1410	return ""
1411}
1412
1413func (x *AddCommentRequest) GetStartLine() int32 {
1414	if x != nil {
1415		return x.StartLine
1416	}
1417	return 0
1418}
1419
1420func (x *AddCommentRequest) GetVerdict() Verdict {
1421	if x != nil {
1422		return x.Verdict
1423	}
1424	return Verdict_VERDICT_UNSPECIFIED
1425}
1426
1427// AddCommentResponse holds the new comment.
1428type AddCommentResponse struct {
1429	state protoimpl.MessageState `protogen:"open.v1"`
1430	// Comment is the created comment.
1431	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1432	unknownFields protoimpl.UnknownFields
1433	sizeCache     protoimpl.SizeCache
1434}
1435
1436func (x *AddCommentResponse) Reset() {
1437	*x = AddCommentResponse{}
1438	mi := &file_ermite_merge_request_proto_msgTypes[11]
1439	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1440	ms.StoreMessageInfo(mi)
1441}
1442
1443func (x *AddCommentResponse) String() string {
1444	return protoimpl.X.MessageStringOf(x)
1445}
1446
1447func (*AddCommentResponse) ProtoMessage() {}
1448
1449func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {
1450	mi := &file_ermite_merge_request_proto_msgTypes[11]
1451	if x != nil {
1452		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1453		if ms.LoadMessageInfo() == nil {
1454			ms.StoreMessageInfo(mi)
1455		}
1456		return ms
1457	}
1458	return mi.MessageOf(x)
1459}
1460
1461// Deprecated: Use AddCommentResponse.ProtoReflect.Descriptor instead.
1462func (*AddCommentResponse) Descriptor() ([]byte, []int) {
1463	return file_ermite_merge_request_proto_rawDescGZIP(), []int{11}
1464}
1465
1466func (x *AddCommentResponse) GetComment() *Comment {
1467	if x != nil {
1468		return x.Comment
1469	}
1470	return nil
1471}
1472
1473// EditCommentRequest describes the new text of a comment.
1474type EditCommentRequest struct {
1475	state protoimpl.MessageState `protogen:"open.v1"`
1476	// Repo is the repository name.
1477	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1478	// Number is the merge request number.
1479	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1480	// CommentId is the Comment.id to edit.
1481	CommentId string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
1482	// Text is the new Markdown source. Required, except for a comment that
1483	// carries a verdict.
1484	Text          string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
1485	unknownFields protoimpl.UnknownFields
1486	sizeCache     protoimpl.SizeCache
1487}
1488
1489func (x *EditCommentRequest) Reset() {
1490	*x = EditCommentRequest{}
1491	mi := &file_ermite_merge_request_proto_msgTypes[12]
1492	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1493	ms.StoreMessageInfo(mi)
1494}
1495
1496func (x *EditCommentRequest) String() string {
1497	return protoimpl.X.MessageStringOf(x)
1498}
1499
1500func (*EditCommentRequest) ProtoMessage() {}
1501
1502func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {
1503	mi := &file_ermite_merge_request_proto_msgTypes[12]
1504	if x != nil {
1505		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1506		if ms.LoadMessageInfo() == nil {
1507			ms.StoreMessageInfo(mi)
1508		}
1509		return ms
1510	}
1511	return mi.MessageOf(x)
1512}
1513
1514// Deprecated: Use EditCommentRequest.ProtoReflect.Descriptor instead.
1515func (*EditCommentRequest) Descriptor() ([]byte, []int) {
1516	return file_ermite_merge_request_proto_rawDescGZIP(), []int{12}
1517}
1518
1519func (x *EditCommentRequest) GetRepo() string {
1520	if x != nil {
1521		return x.Repo
1522	}
1523	return ""
1524}
1525
1526func (x *EditCommentRequest) GetNumber() int64 {
1527	if x != nil {
1528		return x.Number
1529	}
1530	return 0
1531}
1532
1533func (x *EditCommentRequest) GetCommentId() string {
1534	if x != nil {
1535		return x.CommentId
1536	}
1537	return ""
1538}
1539
1540func (x *EditCommentRequest) GetText() string {
1541	if x != nil {
1542		return x.Text
1543	}
1544	return ""
1545}
1546
1547// EditCommentResponse holds the comment after the edit.
1548type EditCommentResponse struct {
1549	state protoimpl.MessageState `protogen:"open.v1"`
1550	// Comment is the updated comment.
1551	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1552	unknownFields protoimpl.UnknownFields
1553	sizeCache     protoimpl.SizeCache
1554}
1555
1556func (x *EditCommentResponse) Reset() {
1557	*x = EditCommentResponse{}
1558	mi := &file_ermite_merge_request_proto_msgTypes[13]
1559	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1560	ms.StoreMessageInfo(mi)
1561}
1562
1563func (x *EditCommentResponse) String() string {
1564	return protoimpl.X.MessageStringOf(x)
1565}
1566
1567func (*EditCommentResponse) ProtoMessage() {}
1568
1569func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {
1570	mi := &file_ermite_merge_request_proto_msgTypes[13]
1571	if x != nil {
1572		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1573		if ms.LoadMessageInfo() == nil {
1574			ms.StoreMessageInfo(mi)
1575		}
1576		return ms
1577	}
1578	return mi.MessageOf(x)
1579}
1580
1581// Deprecated: Use EditCommentResponse.ProtoReflect.Descriptor instead.
1582func (*EditCommentResponse) Descriptor() ([]byte, []int) {
1583	return file_ermite_merge_request_proto_rawDescGZIP(), []int{13}
1584}
1585
1586func (x *EditCommentResponse) GetComment() *Comment {
1587	if x != nil {
1588		return x.Comment
1589	}
1590	return nil
1591}
1592
1593// DeleteCommentRequest names the comment to delete.
1594type DeleteCommentRequest struct {
1595	state protoimpl.MessageState `protogen:"open.v1"`
1596	// Repo is the repository name.
1597	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1598	// Number is the merge request number.
1599	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1600	// CommentId is the Comment.id to delete.
1601	CommentId     string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
1602	unknownFields protoimpl.UnknownFields
1603	sizeCache     protoimpl.SizeCache
1604}
1605
1606func (x *DeleteCommentRequest) Reset() {
1607	*x = DeleteCommentRequest{}
1608	mi := &file_ermite_merge_request_proto_msgTypes[14]
1609	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1610	ms.StoreMessageInfo(mi)
1611}
1612
1613func (x *DeleteCommentRequest) String() string {
1614	return protoimpl.X.MessageStringOf(x)
1615}
1616
1617func (*DeleteCommentRequest) ProtoMessage() {}
1618
1619func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {
1620	mi := &file_ermite_merge_request_proto_msgTypes[14]
1621	if x != nil {
1622		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1623		if ms.LoadMessageInfo() == nil {
1624			ms.StoreMessageInfo(mi)
1625		}
1626		return ms
1627	}
1628	return mi.MessageOf(x)
1629}
1630
1631// Deprecated: Use DeleteCommentRequest.ProtoReflect.Descriptor instead.
1632func (*DeleteCommentRequest) Descriptor() ([]byte, []int) {
1633	return file_ermite_merge_request_proto_rawDescGZIP(), []int{14}
1634}
1635
1636func (x *DeleteCommentRequest) GetRepo() string {
1637	if x != nil {
1638		return x.Repo
1639	}
1640	return ""
1641}
1642
1643func (x *DeleteCommentRequest) GetNumber() int64 {
1644	if x != nil {
1645		return x.Number
1646	}
1647	return 0
1648}
1649
1650func (x *DeleteCommentRequest) GetCommentId() string {
1651	if x != nil {
1652		return x.CommentId
1653	}
1654	return ""
1655}
1656
1657// DeleteCommentResponse holds the comment after the deletion.
1658type DeleteCommentResponse struct {
1659	state protoimpl.MessageState `protogen:"open.v1"`
1660	// Comment is the deleted comment.
1661	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1662	unknownFields protoimpl.UnknownFields
1663	sizeCache     protoimpl.SizeCache
1664}
1665
1666func (x *DeleteCommentResponse) Reset() {
1667	*x = DeleteCommentResponse{}
1668	mi := &file_ermite_merge_request_proto_msgTypes[15]
1669	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1670	ms.StoreMessageInfo(mi)
1671}
1672
1673func (x *DeleteCommentResponse) String() string {
1674	return protoimpl.X.MessageStringOf(x)
1675}
1676
1677func (*DeleteCommentResponse) ProtoMessage() {}
1678
1679func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {
1680	mi := &file_ermite_merge_request_proto_msgTypes[15]
1681	if x != nil {
1682		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1683		if ms.LoadMessageInfo() == nil {
1684			ms.StoreMessageInfo(mi)
1685		}
1686		return ms
1687	}
1688	return mi.MessageOf(x)
1689}
1690
1691// Deprecated: Use DeleteCommentResponse.ProtoReflect.Descriptor instead.
1692func (*DeleteCommentResponse) Descriptor() ([]byte, []int) {
1693	return file_ermite_merge_request_proto_rawDescGZIP(), []int{15}
1694}
1695
1696func (x *DeleteCommentResponse) GetComment() *Comment {
1697	if x != nil {
1698		return x.Comment
1699	}
1700	return nil
1701}
1702
1703// ResolveCommentRequest changes the resolved state of a comment.
1704type ResolveCommentRequest struct {
1705	state protoimpl.MessageState `protogen:"open.v1"`
1706	// Repo is the repository name.
1707	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1708	// Number is the merge request number.
1709	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1710	// CommentId is the Comment.id to change.
1711	CommentId string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
1712	// Resolved is the new state: true to resolve, false to unresolve.
1713	Resolved      bool `protobuf:"varint,4,opt,name=resolved,proto3" json:"resolved,omitempty"`
1714	unknownFields protoimpl.UnknownFields
1715	sizeCache     protoimpl.SizeCache
1716}
1717
1718func (x *ResolveCommentRequest) Reset() {
1719	*x = ResolveCommentRequest{}
1720	mi := &file_ermite_merge_request_proto_msgTypes[16]
1721	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1722	ms.StoreMessageInfo(mi)
1723}
1724
1725func (x *ResolveCommentRequest) String() string {
1726	return protoimpl.X.MessageStringOf(x)
1727}
1728
1729func (*ResolveCommentRequest) ProtoMessage() {}
1730
1731func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {
1732	mi := &file_ermite_merge_request_proto_msgTypes[16]
1733	if x != nil {
1734		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1735		if ms.LoadMessageInfo() == nil {
1736			ms.StoreMessageInfo(mi)
1737		}
1738		return ms
1739	}
1740	return mi.MessageOf(x)
1741}
1742
1743// Deprecated: Use ResolveCommentRequest.ProtoReflect.Descriptor instead.
1744func (*ResolveCommentRequest) Descriptor() ([]byte, []int) {
1745	return file_ermite_merge_request_proto_rawDescGZIP(), []int{16}
1746}
1747
1748func (x *ResolveCommentRequest) GetRepo() string {
1749	if x != nil {
1750		return x.Repo
1751	}
1752	return ""
1753}
1754
1755func (x *ResolveCommentRequest) GetNumber() int64 {
1756	if x != nil {
1757		return x.Number
1758	}
1759	return 0
1760}
1761
1762func (x *ResolveCommentRequest) GetCommentId() string {
1763	if x != nil {
1764		return x.CommentId
1765	}
1766	return ""
1767}
1768
1769func (x *ResolveCommentRequest) GetResolved() bool {
1770	if x != nil {
1771		return x.Resolved
1772	}
1773	return false
1774}
1775
1776// ResolveCommentResponse holds the comment after the change.
1777type ResolveCommentResponse struct {
1778	state protoimpl.MessageState `protogen:"open.v1"`
1779	// Comment is the updated comment.
1780	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1781	unknownFields protoimpl.UnknownFields
1782	sizeCache     protoimpl.SizeCache
1783}
1784
1785func (x *ResolveCommentResponse) Reset() {
1786	*x = ResolveCommentResponse{}
1787	mi := &file_ermite_merge_request_proto_msgTypes[17]
1788	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1789	ms.StoreMessageInfo(mi)
1790}
1791
1792func (x *ResolveCommentResponse) String() string {
1793	return protoimpl.X.MessageStringOf(x)
1794}
1795
1796func (*ResolveCommentResponse) ProtoMessage() {}
1797
1798func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {
1799	mi := &file_ermite_merge_request_proto_msgTypes[17]
1800	if x != nil {
1801		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1802		if ms.LoadMessageInfo() == nil {
1803			ms.StoreMessageInfo(mi)
1804		}
1805		return ms
1806	}
1807	return mi.MessageOf(x)
1808}
1809
1810// Deprecated: Use ResolveCommentResponse.ProtoReflect.Descriptor instead.
1811func (*ResolveCommentResponse) Descriptor() ([]byte, []int) {
1812	return file_ermite_merge_request_proto_rawDescGZIP(), []int{17}
1813}
1814
1815func (x *ResolveCommentResponse) GetComment() *Comment {
1816	if x != nil {
1817		return x.Comment
1818	}
1819	return nil
1820}
1821
1822// CloseMergeRequestRequest names the merge request to close.
1823type CloseMergeRequestRequest struct {
1824	state protoimpl.MessageState `protogen:"open.v1"`
1825	// Repo is the repository name.
1826	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1827	// Number is the merge request number.
1828	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1829	unknownFields protoimpl.UnknownFields
1830	sizeCache     protoimpl.SizeCache
1831}
1832
1833func (x *CloseMergeRequestRequest) Reset() {
1834	*x = CloseMergeRequestRequest{}
1835	mi := &file_ermite_merge_request_proto_msgTypes[18]
1836	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1837	ms.StoreMessageInfo(mi)
1838}
1839
1840func (x *CloseMergeRequestRequest) String() string {
1841	return protoimpl.X.MessageStringOf(x)
1842}
1843
1844func (*CloseMergeRequestRequest) ProtoMessage() {}
1845
1846func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {
1847	mi := &file_ermite_merge_request_proto_msgTypes[18]
1848	if x != nil {
1849		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1850		if ms.LoadMessageInfo() == nil {
1851			ms.StoreMessageInfo(mi)
1852		}
1853		return ms
1854	}
1855	return mi.MessageOf(x)
1856}
1857
1858// Deprecated: Use CloseMergeRequestRequest.ProtoReflect.Descriptor instead.
1859func (*CloseMergeRequestRequest) Descriptor() ([]byte, []int) {
1860	return file_ermite_merge_request_proto_rawDescGZIP(), []int{18}
1861}
1862
1863func (x *CloseMergeRequestRequest) GetRepo() string {
1864	if x != nil {
1865		return x.Repo
1866	}
1867	return ""
1868}
1869
1870func (x *CloseMergeRequestRequest) GetNumber() int64 {
1871	if x != nil {
1872		return x.Number
1873	}
1874	return 0
1875}
1876
1877// CloseMergeRequestResponse holds the merge request after closing.
1878type CloseMergeRequestResponse struct {
1879	state protoimpl.MessageState `protogen:"open.v1"`
1880	// MergeRequest is the closed merge request.
1881	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1882	unknownFields protoimpl.UnknownFields
1883	sizeCache     protoimpl.SizeCache
1884}
1885
1886func (x *CloseMergeRequestResponse) Reset() {
1887	*x = CloseMergeRequestResponse{}
1888	mi := &file_ermite_merge_request_proto_msgTypes[19]
1889	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1890	ms.StoreMessageInfo(mi)
1891}
1892
1893func (x *CloseMergeRequestResponse) String() string {
1894	return protoimpl.X.MessageStringOf(x)
1895}
1896
1897func (*CloseMergeRequestResponse) ProtoMessage() {}
1898
1899func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {
1900	mi := &file_ermite_merge_request_proto_msgTypes[19]
1901	if x != nil {
1902		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1903		if ms.LoadMessageInfo() == nil {
1904			ms.StoreMessageInfo(mi)
1905		}
1906		return ms
1907	}
1908	return mi.MessageOf(x)
1909}
1910
1911// Deprecated: Use CloseMergeRequestResponse.ProtoReflect.Descriptor instead.
1912func (*CloseMergeRequestResponse) Descriptor() ([]byte, []int) {
1913	return file_ermite_merge_request_proto_rawDescGZIP(), []int{19}
1914}
1915
1916func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {
1917	if x != nil {
1918		return x.MergeRequest
1919	}
1920	return nil
1921}
1922
1923// MergeMergeRequestRequest describes the merge to perform.
1924type MergeMergeRequestRequest struct {
1925	state protoimpl.MessageState `protogen:"open.v1"`
1926	// Repo is the repository name.
1927	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1928	// Number is the merge request number.
1929	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1930	// Mode is how to merge. MERGE_MODE_UNSPECIFIED means fast-forward. The mode
1931	// must be in RepoSettings.allowed_merge_modes of the repository.
1932	Mode MergeMode `protobuf:"varint,3,opt,name=mode,proto3,enum=ermite.MergeMode" json:"mode,omitempty"`
1933	// HeadId is the full id of the commit the caller reviewed, that is the
1934	// MergeRequest.head_id it was shown. Required. The merge happens only if the
1935	// source branch still points to it.
1936	HeadId string `protobuf:"bytes,4,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
1937	// DeleteSourceBranch deletes the source branch after the merge. The merge
1938	// is refused before anything changes when the source branch is the default
1939	// branch of the repository or the source or target of another open merge
1940	// request. Servers without the "merge_requests.delete_branch" feature ignore
1941	// it.
1942	DeleteSourceBranch bool `protobuf:"varint,5,opt,name=delete_source_branch,json=deleteSourceBranch,proto3" json:"delete_source_branch,omitempty"`
1943	unknownFields      protoimpl.UnknownFields
1944	sizeCache          protoimpl.SizeCache
1945}
1946
1947func (x *MergeMergeRequestRequest) Reset() {
1948	*x = MergeMergeRequestRequest{}
1949	mi := &file_ermite_merge_request_proto_msgTypes[20]
1950	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1951	ms.StoreMessageInfo(mi)
1952}
1953
1954func (x *MergeMergeRequestRequest) String() string {
1955	return protoimpl.X.MessageStringOf(x)
1956}
1957
1958func (*MergeMergeRequestRequest) ProtoMessage() {}
1959
1960func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
1961	mi := &file_ermite_merge_request_proto_msgTypes[20]
1962	if x != nil {
1963		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1964		if ms.LoadMessageInfo() == nil {
1965			ms.StoreMessageInfo(mi)
1966		}
1967		return ms
1968	}
1969	return mi.MessageOf(x)
1970}
1971
1972// Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
1973func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
1974	return file_ermite_merge_request_proto_rawDescGZIP(), []int{20}
1975}
1976
1977func (x *MergeMergeRequestRequest) GetRepo() string {
1978	if x != nil {
1979		return x.Repo
1980	}
1981	return ""
1982}
1983
1984func (x *MergeMergeRequestRequest) GetNumber() int64 {
1985	if x != nil {
1986		return x.Number
1987	}
1988	return 0
1989}
1990
1991func (x *MergeMergeRequestRequest) GetMode() MergeMode {
1992	if x != nil {
1993		return x.Mode
1994	}
1995	return MergeMode_MERGE_MODE_UNSPECIFIED
1996}
1997
1998func (x *MergeMergeRequestRequest) GetHeadId() string {
1999	if x != nil {
2000		return x.HeadId
2001	}
2002	return ""
2003}
2004
2005func (x *MergeMergeRequestRequest) GetDeleteSourceBranch() bool {
2006	if x != nil {
2007		return x.DeleteSourceBranch
2008	}
2009	return false
2010}
2011
2012// MergeMergeRequestResponse holds the merged merge request.
2013type MergeMergeRequestResponse struct {
2014	state protoimpl.MessageState `protogen:"open.v1"`
2015	// MergeRequest is the merge request after the merge: state MERGED,
2016	// merged_commit_id set to the new tip of the target branch and merge_mode
2017	// set to the mode used.
2018	MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2019	// SourceBranchDeleted is true when delete_source_branch was set: the server
2020	// deletes the branch after answering. The deletion is skipped, and the
2021	// branch kept, if the branch moved or another open merge request uses it
2022	// by then; the merge stands either way. Watch reports the deletion with a
2023	// Pushed event for the source branch.
2024	SourceBranchDeleted bool `protobuf:"varint,2,opt,name=source_branch_deleted,json=sourceBranchDeleted,proto3" json:"source_branch_deleted,omitempty"`
2025	unknownFields       protoimpl.UnknownFields
2026	sizeCache           protoimpl.SizeCache
2027}
2028
2029func (x *MergeMergeRequestResponse) Reset() {
2030	*x = MergeMergeRequestResponse{}
2031	mi := &file_ermite_merge_request_proto_msgTypes[21]
2032	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2033	ms.StoreMessageInfo(mi)
2034}
2035
2036func (x *MergeMergeRequestResponse) String() string {
2037	return protoimpl.X.MessageStringOf(x)
2038}
2039
2040func (*MergeMergeRequestResponse) ProtoMessage() {}
2041
2042func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2043	mi := &file_ermite_merge_request_proto_msgTypes[21]
2044	if x != nil {
2045		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2046		if ms.LoadMessageInfo() == nil {
2047			ms.StoreMessageInfo(mi)
2048		}
2049		return ms
2050	}
2051	return mi.MessageOf(x)
2052}
2053
2054// Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
2055func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2056	return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2057}
2058
2059func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
2060	if x != nil {
2061		return x.MergeRequest
2062	}
2063	return nil
2064}
2065
2066func (x *MergeMergeRequestResponse) GetSourceBranchDeleted() bool {
2067	if x != nil {
2068		return x.SourceBranchDeleted
2069	}
2070	return false
2071}
2072
2073// MarkReadRequest records a read position.
2074type MarkReadRequest struct {
2075	state protoimpl.MessageState `protogen:"open.v1"`
2076	// Repo is the repository name.
2077	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2078	// Number is the merge request number.
2079	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2080	// HeadId is the full id of the commit the caller has reviewed, usually the
2081	// MergeRequest.head_id it was shown. Empty means the current head of the
2082	// source branch.
2083	HeadId        string `protobuf:"bytes,3,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2084	unknownFields protoimpl.UnknownFields
2085	sizeCache     protoimpl.SizeCache
2086}
2087
2088func (x *MarkReadRequest) Reset() {
2089	*x = MarkReadRequest{}
2090	mi := &file_ermite_merge_request_proto_msgTypes[22]
2091	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2092	ms.StoreMessageInfo(mi)
2093}
2094
2095func (x *MarkReadRequest) String() string {
2096	return protoimpl.X.MessageStringOf(x)
2097}
2098
2099func (*MarkReadRequest) ProtoMessage() {}
2100
2101func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2102	mi := &file_ermite_merge_request_proto_msgTypes[22]
2103	if x != nil {
2104		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2105		if ms.LoadMessageInfo() == nil {
2106			ms.StoreMessageInfo(mi)
2107		}
2108		return ms
2109	}
2110	return mi.MessageOf(x)
2111}
2112
2113// Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
2114func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2115	return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2116}
2117
2118func (x *MarkReadRequest) GetRepo() string {
2119	if x != nil {
2120		return x.Repo
2121	}
2122	return ""
2123}
2124
2125func (x *MarkReadRequest) GetNumber() int64 {
2126	if x != nil {
2127		return x.Number
2128	}
2129	return 0
2130}
2131
2132func (x *MarkReadRequest) GetHeadId() string {
2133	if x != nil {
2134		return x.HeadId
2135	}
2136	return ""
2137}
2138
2139// MarkReadResponse is empty.
2140type MarkReadResponse struct {
2141	state         protoimpl.MessageState `protogen:"open.v1"`
2142	unknownFields protoimpl.UnknownFields
2143	sizeCache     protoimpl.SizeCache
2144}
2145
2146func (x *MarkReadResponse) Reset() {
2147	*x = MarkReadResponse{}
2148	mi := &file_ermite_merge_request_proto_msgTypes[23]
2149	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2150	ms.StoreMessageInfo(mi)
2151}
2152
2153func (x *MarkReadResponse) String() string {
2154	return protoimpl.X.MessageStringOf(x)
2155}
2156
2157func (*MarkReadResponse) ProtoMessage() {}
2158
2159func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2160	mi := &file_ermite_merge_request_proto_msgTypes[23]
2161	if x != nil {
2162		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2163		if ms.LoadMessageInfo() == nil {
2164			ms.StoreMessageInfo(mi)
2165		}
2166		return ms
2167	}
2168	return mi.MessageOf(x)
2169}
2170
2171// Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
2172func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2173	return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2174}
2175
2176var File_ermite_merge_request_proto protoreflect.FileDescriptor
2177
2178const file_ermite_merge_request_proto_rawDesc = "" +
2179	"\n" +
2180	"\x1aermite/merge_request.proto\x12\x06ermite\x1a\x10ermite/git.proto\x1a\x12ermite/types.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xce\x02\n" +
2181	"\fMergeability\x12/\n" +
2182	"\x05state\x18\x01 \x01(\x0e2\x19.ermite.MergeabilityStateR\x05state\x12\x1b\n" +
2183	"\ttarget_id\x18\x02 \x01(\tR\btargetId\x12\x17\n" +
2184	"\ahead_id\x18\x03 \x01(\tR\x06headId\x12\x16\n" +
2185	"\x06behind\x18\x04 \x01(\x05R\x06behind\x12#\n" +
2186	"\rbehind_capped\x18\x05 \x01(\bR\fbehindCapped\x12%\n" +
2187	"\x0econflict_paths\x18\x06 \x03(\tR\rconflictPaths\x128\n" +
2188	"\x18conflict_paths_truncated\x18\a \x01(\bR\x16conflictPathsTruncated\x129\n" +
2189	"\n" +
2190	"checked_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcheckedAt\"\xaa\x04\n" +
2191	"\fMergeRequest\x12\x12\n" +
2192	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2193	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x14\n" +
2194	"\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
2195	"\vdescription\x18\x04 \x01(\tR\vdescription\x12#\n" +
2196	"\rsource_branch\x18\x05 \x01(\tR\fsourceBranch\x12#\n" +
2197	"\rtarget_branch\x18\x06 \x01(\tR\ftargetBranch\x12/\n" +
2198	"\x05state\x18\a \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x16\n" +
2199	"\x06author\x18\b \x01(\tR\x06author\x129\n" +
2200	"\n" +
2201	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2202	"\n" +
2203	"updated_at\x18\n" +
2204	" \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x17\n" +
2205	"\ahead_id\x18\v \x01(\tR\x06headId\x12(\n" +
2206	"\x10merged_commit_id\x18\f \x01(\tR\x0emergedCommitId\x120\n" +
2207	"\n" +
2208	"merge_mode\x18\r \x01(\x0e2\x11.ermite.MergeModeR\tmergeMode\x128\n" +
2209	"\fmergeability\x18\x0e \x01(\v2\x14.ermite.MergeabilityR\fmergeability\"\xbf\x03\n" +
2210	"\aComment\x12\x0e\n" +
2211	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
2212	"\x06author\x18\x02 \x01(\tR\x06author\x12\x12\n" +
2213	"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
2214	"\x04line\x18\x04 \x01(\x05R\x04line\x12$\n" +
2215	"\x04side\x18\x05 \x01(\x0e2\x10.ermite.DiffSideR\x04side\x12\x1b\n" +
2216	"\tcommit_id\x18\x06 \x01(\tR\bcommitId\x12\x12\n" +
2217	"\x04text\x18\a \x01(\tR\x04text\x12\x1a\n" +
2218	"\bresolved\x18\b \x01(\bR\bresolved\x129\n" +
2219	"\n" +
2220	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x19\n" +
2221	"\breply_to\x18\n" +
2222	" \x01(\tR\areplyTo\x12\x1d\n" +
2223	"\n" +
2224	"start_line\x18\v \x01(\x05R\tstartLine\x12)\n" +
2225	"\averdict\x18\f \x01(\x0e2\x0f.ermite.VerdictR\averdict\x127\n" +
2226	"\tedited_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\beditedAt\x12\x18\n" +
2227	"\adeleted\x18\x0e \x01(\bR\adeleted\"\xdf\x01\n" +
2228	"\rAuthorVerdict\x12\x16\n" +
2229	"\x06author\x18\x01 \x01(\tR\x06author\x12)\n" +
2230	"\averdict\x18\x02 \x01(\x0e2\x0f.ermite.VerdictR\averdict\x12\x1d\n" +
2231	"\n" +
2232	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x1b\n" +
2233	"\tcommit_id\x18\x04 \x01(\tR\bcommitId\x129\n" +
2234	"\n" +
2235	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x14\n" +
2236	"\x05stale\x18\x06 \x01(\bR\x05stale\"\xb1\x01\n" +
2237	"\x19CreateMergeRequestRequest\x12\x12\n" +
2238	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x14\n" +
2239	"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
2240	"\vdescription\x18\x03 \x01(\tR\vdescription\x12#\n" +
2241	"\rsource_branch\x18\x04 \x01(\tR\fsourceBranch\x12#\n" +
2242	"\rtarget_branch\x18\x05 \x01(\tR\ftargetBranch\"W\n" +
2243	"\x1aCreateMergeRequestResponse\x129\n" +
2244	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\x9b\x01\n" +
2245	"\x18ListMergeRequestsRequest\x12\x12\n" +
2246	"\x04repo\x18\x01 \x01(\tR\x04repo\x12/\n" +
2247	"\x05state\x18\x02 \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x1b\n" +
2248	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" +
2249	"\n" +
2250	"page_token\x18\x04 \x01(\tR\tpageToken\"\x80\x01\n" +
2251	"\x19ListMergeRequestsResponse\x12;\n" +
2252	"\x0emerge_requests\x18\x01 \x03(\v2\x14.ermite.MergeRequestR\rmergeRequests\x12&\n" +
2253	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"l\n" +
2254	"\x16GetMergeRequestRequest\x12\x12\n" +
2255	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2256	"\x06number\x18\x02 \x01(\x03R\x06number\x12&\n" +
2257	"\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xc0\x03\n" +
2258	"\x17GetMergeRequestResponse\x129\n" +
2259	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x12(\n" +
2260	"\acommits\x18\x02 \x03(\v2\x0e.ermite.CommitR\acommits\x12+\n" +
2261	"\x11commits_truncated\x18\x03 \x01(\bR\x10commitsTruncated\x12 \n" +
2262	"\fdiff_base_id\x18\x04 \x01(\tR\n" +
2263	"diffBaseId\x12'\n" +
2264	"\x05stats\x18\x05 \x01(\v2\x11.ermite.DiffStatsR\x05stats\x12 \n" +
2265	"\x04diff\x18\x06 \x01(\v2\f.ermite.DiffR\x04diff\x12+\n" +
2266	"\bcomments\x18\a \x03(\v2\x0f.ermite.CommentR\bcomments\x12 \n" +
2267	"\flast_read_id\x18\b \x01(\tR\n" +
2268	"lastReadId\x12$\n" +
2269	"\x0elast_read_lost\x18\t \x01(\bR\flastReadLost\x121\n" +
2270	"\bverdicts\x18\n" +
2271	" \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\"\x86\x02\n" +
2272	"\x11AddCommentRequest\x12\x12\n" +
2273	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2274	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +
2275	"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
2276	"\x04line\x18\x04 \x01(\x05R\x04line\x12$\n" +
2277	"\x04side\x18\x05 \x01(\x0e2\x10.ermite.DiffSideR\x04side\x12\x12\n" +
2278	"\x04text\x18\x06 \x01(\tR\x04text\x12\x19\n" +
2279	"\breply_to\x18\a \x01(\tR\areplyTo\x12\x1d\n" +
2280	"\n" +
2281	"start_line\x18\b \x01(\x05R\tstartLine\x12)\n" +
2282	"\averdict\x18\t \x01(\x0e2\x0f.ermite.VerdictR\averdict\"?\n" +
2283	"\x12AddCommentResponse\x12)\n" +
2284	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"s\n" +
2285	"\x12EditCommentRequest\x12\x12\n" +
2286	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2287	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2288	"\n" +
2289	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x12\n" +
2290	"\x04text\x18\x04 \x01(\tR\x04text\"@\n" +
2291	"\x13EditCommentResponse\x12)\n" +
2292	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"a\n" +
2293	"\x14DeleteCommentRequest\x12\x12\n" +
2294	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2295	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2296	"\n" +
2297	"comment_id\x18\x03 \x01(\tR\tcommentId\"B\n" +
2298	"\x15DeleteCommentResponse\x12)\n" +
2299	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"~\n" +
2300	"\x15ResolveCommentRequest\x12\x12\n" +
2301	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2302	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2303	"\n" +
2304	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x1a\n" +
2305	"\bresolved\x18\x04 \x01(\bR\bresolved\"C\n" +
2306	"\x16ResolveCommentResponse\x12)\n" +
2307	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"F\n" +
2308	"\x18CloseMergeRequestRequest\x12\x12\n" +
2309	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2310	"\x06number\x18\x02 \x01(\x03R\x06number\"V\n" +
2311	"\x19CloseMergeRequestResponse\x129\n" +
2312	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xb8\x01\n" +
2313	"\x18MergeMergeRequestRequest\x12\x12\n" +
2314	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2315	"\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
2316	"\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2317	"\ahead_id\x18\x04 \x01(\tR\x06headId\x120\n" +
2318	"\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\"\x8a\x01\n" +
2319	"\x19MergeMergeRequestResponse\x129\n" +
2320	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x122\n" +
2321	"\x15source_branch_deleted\x18\x02 \x01(\bR\x13sourceBranchDeleted\"V\n" +
2322	"\x0fMarkReadRequest\x12\x12\n" +
2323	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2324	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x17\n" +
2325	"\ahead_id\x18\x03 \x01(\tR\x06headId\"\x12\n" +
2326	"\x10MarkReadResponse*\x96\x01\n" +
2327	"\x11MergeRequestState\x12#\n" +
2328	"\x1fMERGE_REQUEST_STATE_UNSPECIFIED\x10\x00\x12\x1c\n" +
2329	"\x18MERGE_REQUEST_STATE_OPEN\x10\x01\x12\x1e\n" +
2330	"\x1aMERGE_REQUEST_STATE_MERGED\x10\x02\x12\x1e\n" +
2331	"\x1aMERGE_REQUEST_STATE_CLOSED\x10\x03*K\n" +
2332	"\bDiffSide\x12\x19\n" +
2333	"\x15DIFF_SIDE_UNSPECIFIED\x10\x00\x12\x11\n" +
2334	"\rDIFF_SIDE_OLD\x10\x01\x12\x11\n" +
2335	"\rDIFF_SIDE_NEW\x10\x02*V\n" +
2336	"\aVerdict\x12\x17\n" +
2337	"\x13VERDICT_UNSPECIFIED\x10\x00\x12\x13\n" +
2338	"\x0fVERDICT_APPROVE\x10\x01\x12\x1d\n" +
2339	"\x19VERDICT_CHANGES_REQUESTED\x10\x02*\xbb\x01\n" +
2340	"\x11MergeabilityState\x12\"\n" +
2341	"\x1eMERGEABILITY_STATE_UNSPECIFIED\x10\x00\x12\x1f\n" +
2342	"\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
2343	"\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
2344	"\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2345	"\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xbf\x06\n" +
2346	"\x13MergeRequestService\x12[\n" +
2347	"\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
2348	"\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
2349	"\x0fGetMergeRequest\x12\x1e.ermite.GetMergeRequestRequest\x1a\x1f.ermite.GetMergeRequestResponse\x12C\n" +
2350	"\n" +
2351	"AddComment\x12\x19.ermite.AddCommentRequest\x1a\x1a.ermite.AddCommentResponse\x12F\n" +
2352	"\vEditComment\x12\x1a.ermite.EditCommentRequest\x1a\x1b.ermite.EditCommentResponse\x12L\n" +
2353	"\rDeleteComment\x12\x1c.ermite.DeleteCommentRequest\x1a\x1d.ermite.DeleteCommentResponse\x12O\n" +
2354	"\x0eResolveComment\x12\x1d.ermite.ResolveCommentRequest\x1a\x1e.ermite.ResolveCommentResponse\x12X\n" +
2355	"\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12X\n" +
2356	"\x11MergeMergeRequest\x12 .ermite.MergeMergeRequestRequest\x1a!.ermite.MergeMergeRequestResponse\x12=\n" +
2357	"\bMarkRead\x12\x17.ermite.MarkReadRequest\x1a\x18.ermite.MarkReadResponseBx\n" +
2358	"\n" +
2359	"com.ermiteB\x11MergeRequestProtoP\x01Z\x1fbnema.dev/ermite-api/gen/ermite\xa2\x02\x03EXX\xaa\x02\x06Ermite\xca\x02\x06Ermite\xe2\x02\x12Ermite\\GPBMetadata\xea\x02\x06Ermiteb\x06proto3"
2360
2361var (
2362	file_ermite_merge_request_proto_rawDescOnce sync.Once
2363	file_ermite_merge_request_proto_rawDescData []byte
2364)
2365
2366func file_ermite_merge_request_proto_rawDescGZIP() []byte {
2367	file_ermite_merge_request_proto_rawDescOnce.Do(func() {
2368		file_ermite_merge_request_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)))
2369	})
2370	return file_ermite_merge_request_proto_rawDescData
2371}
2372
2373var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2374var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
2375var file_ermite_merge_request_proto_goTypes = []any{
2376	(MergeRequestState)(0),             // 0: ermite.MergeRequestState
2377	(DiffSide)(0),                      // 1: ermite.DiffSide
2378	(Verdict)(0),                       // 2: ermite.Verdict
2379	(MergeabilityState)(0),             // 3: ermite.MergeabilityState
2380	(*Mergeability)(nil),               // 4: ermite.Mergeability
2381	(*MergeRequest)(nil),               // 5: ermite.MergeRequest
2382	(*Comment)(nil),                    // 6: ermite.Comment
2383	(*AuthorVerdict)(nil),              // 7: ermite.AuthorVerdict
2384	(*CreateMergeRequestRequest)(nil),  // 8: ermite.CreateMergeRequestRequest
2385	(*CreateMergeRequestResponse)(nil), // 9: ermite.CreateMergeRequestResponse
2386	(*ListMergeRequestsRequest)(nil),   // 10: ermite.ListMergeRequestsRequest
2387	(*ListMergeRequestsResponse)(nil),  // 11: ermite.ListMergeRequestsResponse
2388	(*GetMergeRequestRequest)(nil),     // 12: ermite.GetMergeRequestRequest
2389	(*GetMergeRequestResponse)(nil),    // 13: ermite.GetMergeRequestResponse
2390	(*AddCommentRequest)(nil),          // 14: ermite.AddCommentRequest
2391	(*AddCommentResponse)(nil),         // 15: ermite.AddCommentResponse
2392	(*EditCommentRequest)(nil),         // 16: ermite.EditCommentRequest
2393	(*EditCommentResponse)(nil),        // 17: ermite.EditCommentResponse
2394	(*DeleteCommentRequest)(nil),       // 18: ermite.DeleteCommentRequest
2395	(*DeleteCommentResponse)(nil),      // 19: ermite.DeleteCommentResponse
2396	(*ResolveCommentRequest)(nil),      // 20: ermite.ResolveCommentRequest
2397	(*ResolveCommentResponse)(nil),     // 21: ermite.ResolveCommentResponse
2398	(*CloseMergeRequestRequest)(nil),   // 22: ermite.CloseMergeRequestRequest
2399	(*CloseMergeRequestResponse)(nil),  // 23: ermite.CloseMergeRequestResponse
2400	(*MergeMergeRequestRequest)(nil),   // 24: ermite.MergeMergeRequestRequest
2401	(*MergeMergeRequestResponse)(nil),  // 25: ermite.MergeMergeRequestResponse
2402	(*MarkReadRequest)(nil),            // 26: ermite.MarkReadRequest
2403	(*MarkReadResponse)(nil),           // 27: ermite.MarkReadResponse
2404	(*timestamppb.Timestamp)(nil),      // 28: google.protobuf.Timestamp
2405	(MergeMode)(0),                     // 29: ermite.MergeMode
2406	(*Commit)(nil),                     // 30: ermite.Commit
2407	(*DiffStats)(nil),                  // 31: ermite.DiffStats
2408	(*Diff)(nil),                       // 32: ermite.Diff
2409}
2410var file_ermite_merge_request_proto_depIdxs = []int32{
2411	3,  // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
2412	28, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2413	0,  // 2: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
2414	28, // 3: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2415	28, // 4: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2416	29, // 5: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
2417	4,  // 6: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
2418	1,  // 7: ermite.Comment.side:type_name -> ermite.DiffSide
2419	28, // 8: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
2420	2,  // 9: ermite.Comment.verdict:type_name -> ermite.Verdict
2421	28, // 10: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
2422	2,  // 11: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2423	28, // 12: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2424	5,  // 13: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2425	0,  // 14: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
2426	5,  // 15: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
2427	5,  // 16: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2428	30, // 17: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2429	31, // 18: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2430	32, // 19: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
2431	6,  // 20: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
2432	7,  // 21: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
2433	1,  // 22: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
2434	2,  // 23: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict
2435	6,  // 24: ermite.AddCommentResponse.comment:type_name -> ermite.Comment
2436	6,  // 25: ermite.EditCommentResponse.comment:type_name -> ermite.Comment
2437	6,  // 26: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
2438	6,  // 27: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
2439	5,  // 28: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2440	29, // 29: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2441	5,  // 30: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2442	8,  // 31: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2443	10, // 32: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2444	12, // 33: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2445	14, // 34: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2446	16, // 35: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2447	18, // 36: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2448	20, // 37: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2449	22, // 38: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2450	24, // 39: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2451	26, // 40: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2452	9,  // 41: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2453	11, // 42: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2454	13, // 43: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2455	15, // 44: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2456	17, // 45: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2457	19, // 46: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2458	21, // 47: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2459	23, // 48: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2460	25, // 49: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2461	27, // 50: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
2462	41, // [41:51] is the sub-list for method output_type
2463	31, // [31:41] is the sub-list for method input_type
2464	31, // [31:31] is the sub-list for extension type_name
2465	31, // [31:31] is the sub-list for extension extendee
2466	0,  // [0:31] is the sub-list for field type_name
2467}
2468
2469func init() { file_ermite_merge_request_proto_init() }
2470func file_ermite_merge_request_proto_init() {
2471	if File_ermite_merge_request_proto != nil {
2472		return
2473	}
2474	file_ermite_git_proto_init()
2475	file_ermite_types_proto_init()
2476	type x struct{}
2477	out := protoimpl.TypeBuilder{
2478		File: protoimpl.DescBuilder{
2479			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2480			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
2481			NumEnums:      4,
2482			NumMessages:   24,
2483			NumExtensions: 0,
2484			NumServices:   1,
2485		},
2486		GoTypes:           file_ermite_merge_request_proto_goTypes,
2487		DependencyIndexes: file_ermite_merge_request_proto_depIdxs,
2488		EnumInfos:         file_ermite_merge_request_proto_enumTypes,
2489		MessageInfos:      file_ermite_merge_request_proto_msgTypes,
2490	}.Build()
2491	File_ermite_merge_request_proto = out.File
2492	file_ermite_merge_request_proto_goTypes = nil
2493	file_ermite_merge_request_proto_depIdxs = nil
2494}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 18

↑↓ moveenter openesc close