v0.15.0 e4b332d

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// AutoMerge is the pending auto-merge of an open merge request: the server
375// merges it by itself once its checks pass. Set only by servers with the
376// "merge_requests.auto_merge" feature.
377type AutoMerge struct {
378	state protoimpl.MessageState `protogen:"open.v1"`
379	// Mode is the merge mode used. Never MERGE_MODE_UNSPECIFIED.
380	Mode MergeMode `protobuf:"varint,1,opt,name=mode,proto3,enum=ermite.MergeMode" json:"mode,omitempty"`
381	// HeadId is the head the auto-merge was enabled for. A new head cancels the
382	// auto-merge.
383	HeadId string `protobuf:"bytes,2,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
384	// EnabledBy names who enabled the auto-merge, like MergeRequest.author.
385	EnabledBy string `protobuf:"bytes,3,opt,name=enabled_by,json=enabledBy,proto3" json:"enabled_by,omitempty"`
386	// EnabledAt is when the auto-merge was enabled.
387	EnabledAt     *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=enabled_at,json=enabledAt,proto3" json:"enabled_at,omitempty"`
388	unknownFields protoimpl.UnknownFields
389	sizeCache     protoimpl.SizeCache
390}
391
392func (x *AutoMerge) Reset() {
393	*x = AutoMerge{}
394	mi := &file_ermite_merge_request_proto_msgTypes[1]
395	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
396	ms.StoreMessageInfo(mi)
397}
398
399func (x *AutoMerge) String() string {
400	return protoimpl.X.MessageStringOf(x)
401}
402
403func (*AutoMerge) ProtoMessage() {}
404
405func (x *AutoMerge) ProtoReflect() protoreflect.Message {
406	mi := &file_ermite_merge_request_proto_msgTypes[1]
407	if x != nil {
408		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
409		if ms.LoadMessageInfo() == nil {
410			ms.StoreMessageInfo(mi)
411		}
412		return ms
413	}
414	return mi.MessageOf(x)
415}
416
417// Deprecated: Use AutoMerge.ProtoReflect.Descriptor instead.
418func (*AutoMerge) Descriptor() ([]byte, []int) {
419	return file_ermite_merge_request_proto_rawDescGZIP(), []int{1}
420}
421
422func (x *AutoMerge) GetMode() MergeMode {
423	if x != nil {
424		return x.Mode
425	}
426	return MergeMode_MERGE_MODE_UNSPECIFIED
427}
428
429func (x *AutoMerge) GetHeadId() string {
430	if x != nil {
431		return x.HeadId
432	}
433	return ""
434}
435
436func (x *AutoMerge) GetEnabledBy() string {
437	if x != nil {
438		return x.EnabledBy
439	}
440	return ""
441}
442
443func (x *AutoMerge) GetEnabledAt() *timestamppb.Timestamp {
444	if x != nil {
445		return x.EnabledAt
446	}
447	return nil
448}
449
450// MergeRequest asks to merge one branch of a repository into another branch
451// of the same repository. It is about a branch, not about who wrote it.
452type MergeRequest struct {
453	state protoimpl.MessageState `protogen:"open.v1"`
454	// Repo is the name of the repository.
455	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
456	// Number identifies the merge request within its repository, starting at 1
457	// and never reused. It is written "!<number>" in messages and URLs.
458	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
459	// Title is a one-line plain-text title, at most 120 characters.
460	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
461	// Description is a plain-text description, at most 8,000 characters. It may
462	// be empty. Clients show it escaped, with line breaks kept.
463	Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
464	// SourceBranch is the short name of the branch to merge, for example
465	// "feat/x".
466	SourceBranch string `protobuf:"bytes,5,opt,name=source_branch,json=sourceBranch,proto3" json:"source_branch,omitempty"`
467	// TargetBranch is the short name of the branch to merge into, for example
468	// "main".
469	TargetBranch string `protobuf:"bytes,6,opt,name=target_branch,json=targetBranch,proto3" json:"target_branch,omitempty"`
470	// State is where the merge request is in its life.
471	State MergeRequestState `protobuf:"varint,7,opt,name=state,proto3,enum=ermite.MergeRequestState" json:"state,omitempty"`
472	// Author names who created the merge request: the label of the token that
473	// was used, "root" for the root token, or "owner" for a web session. It is
474	// informational: labels are not unique and the token may be gone.
475	Author string `protobuf:"bytes,8,opt,name=author,proto3" json:"author,omitempty"`
476	// CreatedAt is when the merge request was created.
477	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
478	// UpdatedAt is when the merge request last changed: title, description,
479	// state, or a comment added or resolved. Pushes to the source branch do not
480	// change it.
481	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
482	// HeadId is the id of the commit the source branch points to. While the
483	// merge request is open it is read from Git at every call, so it changes
484	// when the branch is pushed; it is empty if the branch was deleted. Once
485	// merged or closed it is the head at that moment.
486	HeadId string `protobuf:"bytes,11,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
487	// MergedCommitId is the id of the commit the target branch points to after
488	// the merge: the head for a fast-forward, the new commit for a squash or a
489	// merge commit.
490	// Empty unless state is MERGED.
491	MergedCommitId string `protobuf:"bytes,12,opt,name=merged_commit_id,json=mergedCommitId,proto3" json:"merged_commit_id,omitempty"`
492	// MergeMode is how the merge request was merged. MERGE_MODE_UNSPECIFIED
493	// unless state is MERGED.
494	MergeMode MergeMode `protobuf:"varint,13,opt,name=merge_mode,json=mergeMode,proto3,enum=ermite.MergeMode" json:"merge_mode,omitempty"`
495	// Mergeability tells whether the head can be merged into the target. Set
496	// while the merge request is OPEN, with state CHECKING until the server has
497	// a result for the current tips; never set once merged or closed. It is a
498	// hint: MergeMergeRequest checks again. Set only by servers with the
499	// "merge_requests.mergeability" feature.
500	Mergeability *Mergeability `protobuf:"bytes,14,opt,name=mergeability,proto3" json:"mergeability,omitempty"`
501	// AutoMerge is the pending auto-merge. Set only while the merge request is
502	// OPEN and auto-merge is enabled; unset once merged or closed. Set only by
503	// servers with the "merge_requests.auto_merge" feature.
504	AutoMerge *AutoMerge `protobuf:"bytes,15,opt,name=auto_merge,json=autoMerge,proto3" json:"auto_merge,omitempty"`
505	// AutoMerged is true when the server merged the merge request by auto-merge.
506	// Always false unless state is MERGED.
507	AutoMerged    bool `protobuf:"varint,16,opt,name=auto_merged,json=autoMerged,proto3" json:"auto_merged,omitempty"`
508	unknownFields protoimpl.UnknownFields
509	sizeCache     protoimpl.SizeCache
510}
511
512func (x *MergeRequest) Reset() {
513	*x = MergeRequest{}
514	mi := &file_ermite_merge_request_proto_msgTypes[2]
515	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
516	ms.StoreMessageInfo(mi)
517}
518
519func (x *MergeRequest) String() string {
520	return protoimpl.X.MessageStringOf(x)
521}
522
523func (*MergeRequest) ProtoMessage() {}
524
525func (x *MergeRequest) ProtoReflect() protoreflect.Message {
526	mi := &file_ermite_merge_request_proto_msgTypes[2]
527	if x != nil {
528		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
529		if ms.LoadMessageInfo() == nil {
530			ms.StoreMessageInfo(mi)
531		}
532		return ms
533	}
534	return mi.MessageOf(x)
535}
536
537// Deprecated: Use MergeRequest.ProtoReflect.Descriptor instead.
538func (*MergeRequest) Descriptor() ([]byte, []int) {
539	return file_ermite_merge_request_proto_rawDescGZIP(), []int{2}
540}
541
542func (x *MergeRequest) GetRepo() string {
543	if x != nil {
544		return x.Repo
545	}
546	return ""
547}
548
549func (x *MergeRequest) GetNumber() int64 {
550	if x != nil {
551		return x.Number
552	}
553	return 0
554}
555
556func (x *MergeRequest) GetTitle() string {
557	if x != nil {
558		return x.Title
559	}
560	return ""
561}
562
563func (x *MergeRequest) GetDescription() string {
564	if x != nil {
565		return x.Description
566	}
567	return ""
568}
569
570func (x *MergeRequest) GetSourceBranch() string {
571	if x != nil {
572		return x.SourceBranch
573	}
574	return ""
575}
576
577func (x *MergeRequest) GetTargetBranch() string {
578	if x != nil {
579		return x.TargetBranch
580	}
581	return ""
582}
583
584func (x *MergeRequest) GetState() MergeRequestState {
585	if x != nil {
586		return x.State
587	}
588	return MergeRequestState_MERGE_REQUEST_STATE_UNSPECIFIED
589}
590
591func (x *MergeRequest) GetAuthor() string {
592	if x != nil {
593		return x.Author
594	}
595	return ""
596}
597
598func (x *MergeRequest) GetCreatedAt() *timestamppb.Timestamp {
599	if x != nil {
600		return x.CreatedAt
601	}
602	return nil
603}
604
605func (x *MergeRequest) GetUpdatedAt() *timestamppb.Timestamp {
606	if x != nil {
607		return x.UpdatedAt
608	}
609	return nil
610}
611
612func (x *MergeRequest) GetHeadId() string {
613	if x != nil {
614		return x.HeadId
615	}
616	return ""
617}
618
619func (x *MergeRequest) GetMergedCommitId() string {
620	if x != nil {
621		return x.MergedCommitId
622	}
623	return ""
624}
625
626func (x *MergeRequest) GetMergeMode() MergeMode {
627	if x != nil {
628		return x.MergeMode
629	}
630	return MergeMode_MERGE_MODE_UNSPECIFIED
631}
632
633func (x *MergeRequest) GetMergeability() *Mergeability {
634	if x != nil {
635		return x.Mergeability
636	}
637	return nil
638}
639
640func (x *MergeRequest) GetAutoMerge() *AutoMerge {
641	if x != nil {
642		return x.AutoMerge
643	}
644	return nil
645}
646
647func (x *MergeRequest) GetAutoMerged() bool {
648	if x != nil {
649		return x.AutoMerged
650	}
651	return false
652}
653
654// Comment is a note on a merge request, either general or attached to a line
655// of its diff.
656type Comment struct {
657	state protoimpl.MessageState `protogen:"open.v1"`
658	// Id identifies the comment within its merge request. Opaque.
659	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
660	// Author names who wrote the comment, like MergeRequest.author.
661	Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"`
662	// Path is the path of the commented file in the diff (the new path, or the
663	// old path of a deleted file). Empty for a general comment.
664	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
665	// Line is the 1-based line number on side. 0 for a general comment.
666	Line int32 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
667	// Side tells whether line counts on the old or the new side of the diff.
668	// DIFF_SIDE_UNSPECIFIED for a general comment.
669	Side DiffSide `protobuf:"varint,5,opt,name=side,proto3,enum=ermite.DiffSide" json:"side,omitempty"`
670	// CommitId is the head of the merge request when the comment was written.
671	// When it differs from the current head the line may have moved; clients
672	// may show the comment as outdated.
673	CommitId string `protobuf:"bytes,6,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
674	// Text is the Markdown source, at most 8,000 characters. Clients render it
675	// as Markdown without raw HTML; "^<id>" refers to a note of the same merge
676	// request. Empty when deleted is true, and possibly empty for a comment
677	// that carries a verdict.
678	Text string `protobuf:"bytes,7,opt,name=text,proto3" json:"text,omitempty"`
679	// Resolved is true once the comment was marked resolved.
680	Resolved bool `protobuf:"varint,8,opt,name=resolved,proto3" json:"resolved,omitempty"`
681	// CreatedAt is when the comment was written.
682	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
683	// ReplyTo is the id of the root comment this comment replies to. Empty for
684	// a root comment. A reply has the path, line, start_line and side of its
685	// root, and its commit_id is the head when the reply was written. Threads
686	// have one level: a reply never has replies.
687	ReplyTo string `protobuf:"bytes,10,opt,name=reply_to,json=replyTo,proto3" json:"reply_to,omitempty"`
688	// StartLine is the 1-based first line of a range that ends at line, on the
689	// same side. 0 for a comment on a single line or a general comment.
690	StartLine int32 `protobuf:"varint,11,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
691	// Verdict is the judgement given with the comment. Only a root comment has
692	// one; it never changes after creation.
693	Verdict Verdict `protobuf:"varint,12,opt,name=verdict,proto3,enum=ermite.Verdict" json:"verdict,omitempty"`
694	// EditedAt is when the text was last changed or the comment was deleted.
695	// Unset if it never was.
696	EditedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=edited_at,json=editedAt,proto3" json:"edited_at,omitempty"`
697	// Deleted is true once the author deleted the comment. Its text is then
698	// empty; its id, anchor, replies and verdict remain.
699	Deleted       bool `protobuf:"varint,14,opt,name=deleted,proto3" json:"deleted,omitempty"`
700	unknownFields protoimpl.UnknownFields
701	sizeCache     protoimpl.SizeCache
702}
703
704func (x *Comment) Reset() {
705	*x = Comment{}
706	mi := &file_ermite_merge_request_proto_msgTypes[3]
707	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
708	ms.StoreMessageInfo(mi)
709}
710
711func (x *Comment) String() string {
712	return protoimpl.X.MessageStringOf(x)
713}
714
715func (*Comment) ProtoMessage() {}
716
717func (x *Comment) ProtoReflect() protoreflect.Message {
718	mi := &file_ermite_merge_request_proto_msgTypes[3]
719	if x != nil {
720		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
721		if ms.LoadMessageInfo() == nil {
722			ms.StoreMessageInfo(mi)
723		}
724		return ms
725	}
726	return mi.MessageOf(x)
727}
728
729// Deprecated: Use Comment.ProtoReflect.Descriptor instead.
730func (*Comment) Descriptor() ([]byte, []int) {
731	return file_ermite_merge_request_proto_rawDescGZIP(), []int{3}
732}
733
734func (x *Comment) GetId() string {
735	if x != nil {
736		return x.Id
737	}
738	return ""
739}
740
741func (x *Comment) GetAuthor() string {
742	if x != nil {
743		return x.Author
744	}
745	return ""
746}
747
748func (x *Comment) GetPath() string {
749	if x != nil {
750		return x.Path
751	}
752	return ""
753}
754
755func (x *Comment) GetLine() int32 {
756	if x != nil {
757		return x.Line
758	}
759	return 0
760}
761
762func (x *Comment) GetSide() DiffSide {
763	if x != nil {
764		return x.Side
765	}
766	return DiffSide_DIFF_SIDE_UNSPECIFIED
767}
768
769func (x *Comment) GetCommitId() string {
770	if x != nil {
771		return x.CommitId
772	}
773	return ""
774}
775
776func (x *Comment) GetText() string {
777	if x != nil {
778		return x.Text
779	}
780	return ""
781}
782
783func (x *Comment) GetResolved() bool {
784	if x != nil {
785		return x.Resolved
786	}
787	return false
788}
789
790func (x *Comment) GetCreatedAt() *timestamppb.Timestamp {
791	if x != nil {
792		return x.CreatedAt
793	}
794	return nil
795}
796
797func (x *Comment) GetReplyTo() string {
798	if x != nil {
799		return x.ReplyTo
800	}
801	return ""
802}
803
804func (x *Comment) GetStartLine() int32 {
805	if x != nil {
806		return x.StartLine
807	}
808	return 0
809}
810
811func (x *Comment) GetVerdict() Verdict {
812	if x != nil {
813		return x.Verdict
814	}
815	return Verdict_VERDICT_UNSPECIFIED
816}
817
818func (x *Comment) GetEditedAt() *timestamppb.Timestamp {
819	if x != nil {
820		return x.EditedAt
821	}
822	return nil
823}
824
825func (x *Comment) GetDeleted() bool {
826	if x != nil {
827		return x.Deleted
828	}
829	return false
830}
831
832// AuthorVerdict is the current verdict of one author on a merge request: the
833// one given with the author's latest comment that carries a verdict.
834type AuthorVerdict struct {
835	state protoimpl.MessageState `protogen:"open.v1"`
836	// Author names who gave the verdict, like Comment.author.
837	Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
838	// Verdict is the current verdict. Never VERDICT_UNSPECIFIED.
839	Verdict Verdict `protobuf:"varint,2,opt,name=verdict,proto3,enum=ermite.Verdict" json:"verdict,omitempty"`
840	// CommentId is the id of the comment that carries the verdict.
841	CommentId string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
842	// CommitId is the head of the merge request when the verdict was given.
843	CommitId string `protobuf:"bytes,4,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
844	// CreatedAt is when the verdict was given.
845	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
846	// Stale is true for an approval given on a commit that is not the current
847	// head. A request for changes is never stale.
848	Stale         bool `protobuf:"varint,6,opt,name=stale,proto3" json:"stale,omitempty"`
849	unknownFields protoimpl.UnknownFields
850	sizeCache     protoimpl.SizeCache
851}
852
853func (x *AuthorVerdict) Reset() {
854	*x = AuthorVerdict{}
855	mi := &file_ermite_merge_request_proto_msgTypes[4]
856	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
857	ms.StoreMessageInfo(mi)
858}
859
860func (x *AuthorVerdict) String() string {
861	return protoimpl.X.MessageStringOf(x)
862}
863
864func (*AuthorVerdict) ProtoMessage() {}
865
866func (x *AuthorVerdict) ProtoReflect() protoreflect.Message {
867	mi := &file_ermite_merge_request_proto_msgTypes[4]
868	if x != nil {
869		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
870		if ms.LoadMessageInfo() == nil {
871			ms.StoreMessageInfo(mi)
872		}
873		return ms
874	}
875	return mi.MessageOf(x)
876}
877
878// Deprecated: Use AuthorVerdict.ProtoReflect.Descriptor instead.
879func (*AuthorVerdict) Descriptor() ([]byte, []int) {
880	return file_ermite_merge_request_proto_rawDescGZIP(), []int{4}
881}
882
883func (x *AuthorVerdict) GetAuthor() string {
884	if x != nil {
885		return x.Author
886	}
887	return ""
888}
889
890func (x *AuthorVerdict) GetVerdict() Verdict {
891	if x != nil {
892		return x.Verdict
893	}
894	return Verdict_VERDICT_UNSPECIFIED
895}
896
897func (x *AuthorVerdict) GetCommentId() string {
898	if x != nil {
899		return x.CommentId
900	}
901	return ""
902}
903
904func (x *AuthorVerdict) GetCommitId() string {
905	if x != nil {
906		return x.CommitId
907	}
908	return ""
909}
910
911func (x *AuthorVerdict) GetCreatedAt() *timestamppb.Timestamp {
912	if x != nil {
913		return x.CreatedAt
914	}
915	return nil
916}
917
918func (x *AuthorVerdict) GetStale() bool {
919	if x != nil {
920		return x.Stale
921	}
922	return false
923}
924
925// CreateMergeRequestRequest describes the merge request to open.
926type CreateMergeRequestRequest struct {
927	state protoimpl.MessageState `protogen:"open.v1"`
928	// Repo is the repository name.
929	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
930	// Title is the one-line title. Required.
931	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
932	// Description is the optional description.
933	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
934	// SourceBranch is the short name of the branch to merge. Required; the
935	// branch must exist.
936	SourceBranch string `protobuf:"bytes,4,opt,name=source_branch,json=sourceBranch,proto3" json:"source_branch,omitempty"`
937	// TargetBranch is the short name of the branch to merge into. Empty means
938	// the default branch of the repository. The branch must exist and differ
939	// from source_branch.
940	TargetBranch  string `protobuf:"bytes,5,opt,name=target_branch,json=targetBranch,proto3" json:"target_branch,omitempty"`
941	unknownFields protoimpl.UnknownFields
942	sizeCache     protoimpl.SizeCache
943}
944
945func (x *CreateMergeRequestRequest) Reset() {
946	*x = CreateMergeRequestRequest{}
947	mi := &file_ermite_merge_request_proto_msgTypes[5]
948	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
949	ms.StoreMessageInfo(mi)
950}
951
952func (x *CreateMergeRequestRequest) String() string {
953	return protoimpl.X.MessageStringOf(x)
954}
955
956func (*CreateMergeRequestRequest) ProtoMessage() {}
957
958func (x *CreateMergeRequestRequest) ProtoReflect() protoreflect.Message {
959	mi := &file_ermite_merge_request_proto_msgTypes[5]
960	if x != nil {
961		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
962		if ms.LoadMessageInfo() == nil {
963			ms.StoreMessageInfo(mi)
964		}
965		return ms
966	}
967	return mi.MessageOf(x)
968}
969
970// Deprecated: Use CreateMergeRequestRequest.ProtoReflect.Descriptor instead.
971func (*CreateMergeRequestRequest) Descriptor() ([]byte, []int) {
972	return file_ermite_merge_request_proto_rawDescGZIP(), []int{5}
973}
974
975func (x *CreateMergeRequestRequest) GetRepo() string {
976	if x != nil {
977		return x.Repo
978	}
979	return ""
980}
981
982func (x *CreateMergeRequestRequest) GetTitle() string {
983	if x != nil {
984		return x.Title
985	}
986	return ""
987}
988
989func (x *CreateMergeRequestRequest) GetDescription() string {
990	if x != nil {
991		return x.Description
992	}
993	return ""
994}
995
996func (x *CreateMergeRequestRequest) GetSourceBranch() string {
997	if x != nil {
998		return x.SourceBranch
999	}
1000	return ""
1001}
1002
1003func (x *CreateMergeRequestRequest) GetTargetBranch() string {
1004	if x != nil {
1005		return x.TargetBranch
1006	}
1007	return ""
1008}
1009
1010// CreateMergeRequestResponse holds the new merge request.
1011type CreateMergeRequestResponse struct {
1012	state protoimpl.MessageState `protogen:"open.v1"`
1013	// MergeRequest is the created merge request.
1014	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1015	unknownFields protoimpl.UnknownFields
1016	sizeCache     protoimpl.SizeCache
1017}
1018
1019func (x *CreateMergeRequestResponse) Reset() {
1020	*x = CreateMergeRequestResponse{}
1021	mi := &file_ermite_merge_request_proto_msgTypes[6]
1022	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1023	ms.StoreMessageInfo(mi)
1024}
1025
1026func (x *CreateMergeRequestResponse) String() string {
1027	return protoimpl.X.MessageStringOf(x)
1028}
1029
1030func (*CreateMergeRequestResponse) ProtoMessage() {}
1031
1032func (x *CreateMergeRequestResponse) ProtoReflect() protoreflect.Message {
1033	mi := &file_ermite_merge_request_proto_msgTypes[6]
1034	if x != nil {
1035		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1036		if ms.LoadMessageInfo() == nil {
1037			ms.StoreMessageInfo(mi)
1038		}
1039		return ms
1040	}
1041	return mi.MessageOf(x)
1042}
1043
1044// Deprecated: Use CreateMergeRequestResponse.ProtoReflect.Descriptor instead.
1045func (*CreateMergeRequestResponse) Descriptor() ([]byte, []int) {
1046	return file_ermite_merge_request_proto_rawDescGZIP(), []int{6}
1047}
1048
1049func (x *CreateMergeRequestResponse) GetMergeRequest() *MergeRequest {
1050	if x != nil {
1051		return x.MergeRequest
1052	}
1053	return nil
1054}
1055
1056// ListMergeRequestsRequest selects a page of merge requests.
1057type ListMergeRequestsRequest struct {
1058	state protoimpl.MessageState `protogen:"open.v1"`
1059	// Repo is the repository name.
1060	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1061	// State restricts the result to one state. MERGE_REQUEST_STATE_UNSPECIFIED
1062	// means every state.
1063	State MergeRequestState `protobuf:"varint,2,opt,name=state,proto3,enum=ermite.MergeRequestState" json:"state,omitempty"`
1064	// PageSize is the maximum number of merge requests to return. 0 means the
1065	// server default; values above the server maximum are lowered to it.
1066	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1067	// PageToken is the next_page_token of a previous response, to continue the
1068	// same listing. Empty for the first page. Other fields must be unchanged.
1069	PageToken     string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
1070	unknownFields protoimpl.UnknownFields
1071	sizeCache     protoimpl.SizeCache
1072}
1073
1074func (x *ListMergeRequestsRequest) Reset() {
1075	*x = ListMergeRequestsRequest{}
1076	mi := &file_ermite_merge_request_proto_msgTypes[7]
1077	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1078	ms.StoreMessageInfo(mi)
1079}
1080
1081func (x *ListMergeRequestsRequest) String() string {
1082	return protoimpl.X.MessageStringOf(x)
1083}
1084
1085func (*ListMergeRequestsRequest) ProtoMessage() {}
1086
1087func (x *ListMergeRequestsRequest) ProtoReflect() protoreflect.Message {
1088	mi := &file_ermite_merge_request_proto_msgTypes[7]
1089	if x != nil {
1090		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1091		if ms.LoadMessageInfo() == nil {
1092			ms.StoreMessageInfo(mi)
1093		}
1094		return ms
1095	}
1096	return mi.MessageOf(x)
1097}
1098
1099// Deprecated: Use ListMergeRequestsRequest.ProtoReflect.Descriptor instead.
1100func (*ListMergeRequestsRequest) Descriptor() ([]byte, []int) {
1101	return file_ermite_merge_request_proto_rawDescGZIP(), []int{7}
1102}
1103
1104func (x *ListMergeRequestsRequest) GetRepo() string {
1105	if x != nil {
1106		return x.Repo
1107	}
1108	return ""
1109}
1110
1111func (x *ListMergeRequestsRequest) GetState() MergeRequestState {
1112	if x != nil {
1113		return x.State
1114	}
1115	return MergeRequestState_MERGE_REQUEST_STATE_UNSPECIFIED
1116}
1117
1118func (x *ListMergeRequestsRequest) GetPageSize() int32 {
1119	if x != nil {
1120		return x.PageSize
1121	}
1122	return 0
1123}
1124
1125func (x *ListMergeRequestsRequest) GetPageToken() string {
1126	if x != nil {
1127		return x.PageToken
1128	}
1129	return ""
1130}
1131
1132// ListMergeRequestsResponse is one page of merge requests.
1133type ListMergeRequestsResponse struct {
1134	state protoimpl.MessageState `protogen:"open.v1"`
1135	// MergeRequests are the merge requests of this page, highest number first.
1136	MergeRequests []*MergeRequest `protobuf:"bytes,1,rep,name=merge_requests,json=mergeRequests,proto3" json:"merge_requests,omitempty"`
1137	// NextPageToken is passed as page_token to get the next page. Empty when
1138	// there is no next page.
1139	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1140	unknownFields protoimpl.UnknownFields
1141	sizeCache     protoimpl.SizeCache
1142}
1143
1144func (x *ListMergeRequestsResponse) Reset() {
1145	*x = ListMergeRequestsResponse{}
1146	mi := &file_ermite_merge_request_proto_msgTypes[8]
1147	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1148	ms.StoreMessageInfo(mi)
1149}
1150
1151func (x *ListMergeRequestsResponse) String() string {
1152	return protoimpl.X.MessageStringOf(x)
1153}
1154
1155func (*ListMergeRequestsResponse) ProtoMessage() {}
1156
1157func (x *ListMergeRequestsResponse) ProtoReflect() protoreflect.Message {
1158	mi := &file_ermite_merge_request_proto_msgTypes[8]
1159	if x != nil {
1160		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1161		if ms.LoadMessageInfo() == nil {
1162			ms.StoreMessageInfo(mi)
1163		}
1164		return ms
1165	}
1166	return mi.MessageOf(x)
1167}
1168
1169// Deprecated: Use ListMergeRequestsResponse.ProtoReflect.Descriptor instead.
1170func (*ListMergeRequestsResponse) Descriptor() ([]byte, []int) {
1171	return file_ermite_merge_request_proto_rawDescGZIP(), []int{8}
1172}
1173
1174func (x *ListMergeRequestsResponse) GetMergeRequests() []*MergeRequest {
1175	if x != nil {
1176		return x.MergeRequests
1177	}
1178	return nil
1179}
1180
1181func (x *ListMergeRequestsResponse) GetNextPageToken() string {
1182	if x != nil {
1183		return x.NextPageToken
1184	}
1185	return ""
1186}
1187
1188// GetMergeRequestRequest selects a merge request.
1189type GetMergeRequestRequest struct {
1190	state protoimpl.MessageState `protogen:"open.v1"`
1191	// Repo is the repository name.
1192	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1193	// Number is the merge request number.
1194	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1195	// SinceLastRead asks for the diff between the head recorded by MarkRead and
1196	// the current head instead of the diff against the target. It works after a
1197	// force-push as long as the recorded commit still exists in the repository.
1198	// When nothing was marked read, or the recorded commit is gone, the response
1199	// holds the diff against the target and says so in last_read_id and
1200	// last_read_lost.
1201	SinceLastRead bool `protobuf:"varint,3,opt,name=since_last_read,json=sinceLastRead,proto3" json:"since_last_read,omitempty"`
1202	unknownFields protoimpl.UnknownFields
1203	sizeCache     protoimpl.SizeCache
1204}
1205
1206func (x *GetMergeRequestRequest) Reset() {
1207	*x = GetMergeRequestRequest{}
1208	mi := &file_ermite_merge_request_proto_msgTypes[9]
1209	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1210	ms.StoreMessageInfo(mi)
1211}
1212
1213func (x *GetMergeRequestRequest) String() string {
1214	return protoimpl.X.MessageStringOf(x)
1215}
1216
1217func (*GetMergeRequestRequest) ProtoMessage() {}
1218
1219func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {
1220	mi := &file_ermite_merge_request_proto_msgTypes[9]
1221	if x != nil {
1222		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1223		if ms.LoadMessageInfo() == nil {
1224			ms.StoreMessageInfo(mi)
1225		}
1226		return ms
1227	}
1228	return mi.MessageOf(x)
1229}
1230
1231// Deprecated: Use GetMergeRequestRequest.ProtoReflect.Descriptor instead.
1232func (*GetMergeRequestRequest) Descriptor() ([]byte, []int) {
1233	return file_ermite_merge_request_proto_rawDescGZIP(), []int{9}
1234}
1235
1236func (x *GetMergeRequestRequest) GetRepo() string {
1237	if x != nil {
1238		return x.Repo
1239	}
1240	return ""
1241}
1242
1243func (x *GetMergeRequestRequest) GetNumber() int64 {
1244	if x != nil {
1245		return x.Number
1246	}
1247	return 0
1248}
1249
1250func (x *GetMergeRequestRequest) GetSinceLastRead() bool {
1251	if x != nil {
1252		return x.SinceLastRead
1253	}
1254	return false
1255}
1256
1257// GetMergeRequestResponse holds a merge request with its review data.
1258type GetMergeRequestResponse struct {
1259	state protoimpl.MessageState `protogen:"open.v1"`
1260	// MergeRequest is the merge request.
1261	MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1262	// Commits are the commits of the head that are not in the target
1263	// ("target..head"), newest first. At most 100 are returned (a server limit
1264	// that may change; rely on commits_truncated, not on the number). Empty when
1265	// the source branch was deleted.
1266	Commits []*Commit `protobuf:"bytes,2,rep,name=commits,proto3" json:"commits,omitempty"`
1267	// CommitsTruncated is true when the branch has more commits than commits
1268	// holds.
1269	CommitsTruncated bool `protobuf:"varint,3,opt,name=commits_truncated,json=commitsTruncated,proto3" json:"commits_truncated,omitempty"`
1270	// DiffBaseId is the id of the commit the diff compares from: the merge base
1271	// of the target and the head, or the last read head when since_last_read
1272	// applied. Empty when the source branch was deleted; diff is then empty.
1273	DiffBaseId string `protobuf:"bytes,4,opt,name=diff_base_id,json=diffBaseId,proto3" json:"diff_base_id,omitempty"`
1274	// Stats are the totals of the diff, including files that it omits or
1275	// truncates.
1276	Stats *DiffStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"`
1277	// Diff is the structured diff from diff_base_id to the head, with the same
1278	// limits and truncated flags as GetCommitResponse.diff.
1279	Diff *Diff `protobuf:"bytes,6,opt,name=diff,proto3" json:"diff,omitempty"`
1280	// Comments are every comment of the merge request, oldest first.
1281	Comments []*Comment `protobuf:"bytes,7,rep,name=comments,proto3" json:"comments,omitempty"`
1282	// LastReadId is the head recorded by MarkRead, whether or not
1283	// since_last_read was set. Empty when nothing was marked read.
1284	LastReadId string `protobuf:"bytes,8,opt,name=last_read_id,json=lastReadId,proto3" json:"last_read_id,omitempty"`
1285	// LastReadLost is true when since_last_read was set, a head was recorded,
1286	// but that commit no longer exists in the repository: the diff is then the
1287	// diff against the target. A client should tell the reader to review the
1288	// whole change again.
1289	LastReadLost bool `protobuf:"varint,9,opt,name=last_read_lost,json=lastReadLost,proto3" json:"last_read_lost,omitempty"`
1290	// Verdicts are the current verdicts, one per author who gave one, ordered
1291	// by the comment that carries them, oldest first.
1292	Verdicts      []*AuthorVerdict `protobuf:"bytes,10,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
1293	unknownFields protoimpl.UnknownFields
1294	sizeCache     protoimpl.SizeCache
1295}
1296
1297func (x *GetMergeRequestResponse) Reset() {
1298	*x = GetMergeRequestResponse{}
1299	mi := &file_ermite_merge_request_proto_msgTypes[10]
1300	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1301	ms.StoreMessageInfo(mi)
1302}
1303
1304func (x *GetMergeRequestResponse) String() string {
1305	return protoimpl.X.MessageStringOf(x)
1306}
1307
1308func (*GetMergeRequestResponse) ProtoMessage() {}
1309
1310func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {
1311	mi := &file_ermite_merge_request_proto_msgTypes[10]
1312	if x != nil {
1313		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1314		if ms.LoadMessageInfo() == nil {
1315			ms.StoreMessageInfo(mi)
1316		}
1317		return ms
1318	}
1319	return mi.MessageOf(x)
1320}
1321
1322// Deprecated: Use GetMergeRequestResponse.ProtoReflect.Descriptor instead.
1323func (*GetMergeRequestResponse) Descriptor() ([]byte, []int) {
1324	return file_ermite_merge_request_proto_rawDescGZIP(), []int{10}
1325}
1326
1327func (x *GetMergeRequestResponse) GetMergeRequest() *MergeRequest {
1328	if x != nil {
1329		return x.MergeRequest
1330	}
1331	return nil
1332}
1333
1334func (x *GetMergeRequestResponse) GetCommits() []*Commit {
1335	if x != nil {
1336		return x.Commits
1337	}
1338	return nil
1339}
1340
1341func (x *GetMergeRequestResponse) GetCommitsTruncated() bool {
1342	if x != nil {
1343		return x.CommitsTruncated
1344	}
1345	return false
1346}
1347
1348func (x *GetMergeRequestResponse) GetDiffBaseId() string {
1349	if x != nil {
1350		return x.DiffBaseId
1351	}
1352	return ""
1353}
1354
1355func (x *GetMergeRequestResponse) GetStats() *DiffStats {
1356	if x != nil {
1357		return x.Stats
1358	}
1359	return nil
1360}
1361
1362func (x *GetMergeRequestResponse) GetDiff() *Diff {
1363	if x != nil {
1364		return x.Diff
1365	}
1366	return nil
1367}
1368
1369func (x *GetMergeRequestResponse) GetComments() []*Comment {
1370	if x != nil {
1371		return x.Comments
1372	}
1373	return nil
1374}
1375
1376func (x *GetMergeRequestResponse) GetLastReadId() string {
1377	if x != nil {
1378		return x.LastReadId
1379	}
1380	return ""
1381}
1382
1383func (x *GetMergeRequestResponse) GetLastReadLost() bool {
1384	if x != nil {
1385		return x.LastReadLost
1386	}
1387	return false
1388}
1389
1390func (x *GetMergeRequestResponse) GetVerdicts() []*AuthorVerdict {
1391	if x != nil {
1392		return x.Verdicts
1393	}
1394	return nil
1395}
1396
1397// AddCommentRequest describes the comment to add.
1398type AddCommentRequest struct {
1399	state protoimpl.MessageState `protogen:"open.v1"`
1400	// Repo is the repository name.
1401	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1402	// Number is the merge request number.
1403	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1404	// Path is the file the comment is attached to, as given by the diff of the
1405	// merge request: FileDiff.new_path, or old_path for a deleted file. Empty
1406	// for a general comment; then line must be 0 and side unspecified.
1407	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
1408	// Line is the 1-based line number on side. It must be the old_number or
1409	// new_number of a Line of a hunk of the file; a line outside the hunks is
1410	// invalid_argument. 0 for a general comment.
1411	Line int32 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
1412	// Side is the side line counts on. Required when path is set.
1413	Side DiffSide `protobuf:"varint,5,opt,name=side,proto3,enum=ermite.DiffSide" json:"side,omitempty"`
1414	// Text is the Markdown source. Required, except when verdict is set.
1415	Text string `protobuf:"bytes,6,opt,name=text,proto3" json:"text,omitempty"`
1416	// ReplyTo is the id of the root comment to reply to. Empty for a new root
1417	// comment. A reply takes the anchor of its root: path, line, start_line,
1418	// side and verdict must then be unset.
1419	ReplyTo string `protobuf:"bytes,7,opt,name=reply_to,json=replyTo,proto3" json:"reply_to,omitempty"`
1420	// StartLine is the 1-based first line of a range ending at line. 0 for a
1421	// single line. Needs path; it must be lower than line, and both ends must
1422	// be lines of the diff on side.
1423	StartLine int32 `protobuf:"varint,8,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
1424	// Verdict is the judgement to give. Needs the mr:review scope and a root
1425	// comment. VERDICT_UNSPECIFIED for a plain comment.
1426	Verdict       Verdict `protobuf:"varint,9,opt,name=verdict,proto3,enum=ermite.Verdict" json:"verdict,omitempty"`
1427	unknownFields protoimpl.UnknownFields
1428	sizeCache     protoimpl.SizeCache
1429}
1430
1431func (x *AddCommentRequest) Reset() {
1432	*x = AddCommentRequest{}
1433	mi := &file_ermite_merge_request_proto_msgTypes[11]
1434	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1435	ms.StoreMessageInfo(mi)
1436}
1437
1438func (x *AddCommentRequest) String() string {
1439	return protoimpl.X.MessageStringOf(x)
1440}
1441
1442func (*AddCommentRequest) ProtoMessage() {}
1443
1444func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {
1445	mi := &file_ermite_merge_request_proto_msgTypes[11]
1446	if x != nil {
1447		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1448		if ms.LoadMessageInfo() == nil {
1449			ms.StoreMessageInfo(mi)
1450		}
1451		return ms
1452	}
1453	return mi.MessageOf(x)
1454}
1455
1456// Deprecated: Use AddCommentRequest.ProtoReflect.Descriptor instead.
1457func (*AddCommentRequest) Descriptor() ([]byte, []int) {
1458	return file_ermite_merge_request_proto_rawDescGZIP(), []int{11}
1459}
1460
1461func (x *AddCommentRequest) GetRepo() string {
1462	if x != nil {
1463		return x.Repo
1464	}
1465	return ""
1466}
1467
1468func (x *AddCommentRequest) GetNumber() int64 {
1469	if x != nil {
1470		return x.Number
1471	}
1472	return 0
1473}
1474
1475func (x *AddCommentRequest) GetPath() string {
1476	if x != nil {
1477		return x.Path
1478	}
1479	return ""
1480}
1481
1482func (x *AddCommentRequest) GetLine() int32 {
1483	if x != nil {
1484		return x.Line
1485	}
1486	return 0
1487}
1488
1489func (x *AddCommentRequest) GetSide() DiffSide {
1490	if x != nil {
1491		return x.Side
1492	}
1493	return DiffSide_DIFF_SIDE_UNSPECIFIED
1494}
1495
1496func (x *AddCommentRequest) GetText() string {
1497	if x != nil {
1498		return x.Text
1499	}
1500	return ""
1501}
1502
1503func (x *AddCommentRequest) GetReplyTo() string {
1504	if x != nil {
1505		return x.ReplyTo
1506	}
1507	return ""
1508}
1509
1510func (x *AddCommentRequest) GetStartLine() int32 {
1511	if x != nil {
1512		return x.StartLine
1513	}
1514	return 0
1515}
1516
1517func (x *AddCommentRequest) GetVerdict() Verdict {
1518	if x != nil {
1519		return x.Verdict
1520	}
1521	return Verdict_VERDICT_UNSPECIFIED
1522}
1523
1524// AddCommentResponse holds the new comment.
1525type AddCommentResponse struct {
1526	state protoimpl.MessageState `protogen:"open.v1"`
1527	// Comment is the created comment.
1528	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1529	unknownFields protoimpl.UnknownFields
1530	sizeCache     protoimpl.SizeCache
1531}
1532
1533func (x *AddCommentResponse) Reset() {
1534	*x = AddCommentResponse{}
1535	mi := &file_ermite_merge_request_proto_msgTypes[12]
1536	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1537	ms.StoreMessageInfo(mi)
1538}
1539
1540func (x *AddCommentResponse) String() string {
1541	return protoimpl.X.MessageStringOf(x)
1542}
1543
1544func (*AddCommentResponse) ProtoMessage() {}
1545
1546func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {
1547	mi := &file_ermite_merge_request_proto_msgTypes[12]
1548	if x != nil {
1549		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1550		if ms.LoadMessageInfo() == nil {
1551			ms.StoreMessageInfo(mi)
1552		}
1553		return ms
1554	}
1555	return mi.MessageOf(x)
1556}
1557
1558// Deprecated: Use AddCommentResponse.ProtoReflect.Descriptor instead.
1559func (*AddCommentResponse) Descriptor() ([]byte, []int) {
1560	return file_ermite_merge_request_proto_rawDescGZIP(), []int{12}
1561}
1562
1563func (x *AddCommentResponse) GetComment() *Comment {
1564	if x != nil {
1565		return x.Comment
1566	}
1567	return nil
1568}
1569
1570// EditCommentRequest describes the new text of a comment.
1571type EditCommentRequest struct {
1572	state protoimpl.MessageState `protogen:"open.v1"`
1573	// Repo is the repository name.
1574	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1575	// Number is the merge request number.
1576	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1577	// CommentId is the Comment.id to edit.
1578	CommentId string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
1579	// Text is the new Markdown source. Required, except for a comment that
1580	// carries a verdict.
1581	Text          string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
1582	unknownFields protoimpl.UnknownFields
1583	sizeCache     protoimpl.SizeCache
1584}
1585
1586func (x *EditCommentRequest) Reset() {
1587	*x = EditCommentRequest{}
1588	mi := &file_ermite_merge_request_proto_msgTypes[13]
1589	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1590	ms.StoreMessageInfo(mi)
1591}
1592
1593func (x *EditCommentRequest) String() string {
1594	return protoimpl.X.MessageStringOf(x)
1595}
1596
1597func (*EditCommentRequest) ProtoMessage() {}
1598
1599func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {
1600	mi := &file_ermite_merge_request_proto_msgTypes[13]
1601	if x != nil {
1602		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1603		if ms.LoadMessageInfo() == nil {
1604			ms.StoreMessageInfo(mi)
1605		}
1606		return ms
1607	}
1608	return mi.MessageOf(x)
1609}
1610
1611// Deprecated: Use EditCommentRequest.ProtoReflect.Descriptor instead.
1612func (*EditCommentRequest) Descriptor() ([]byte, []int) {
1613	return file_ermite_merge_request_proto_rawDescGZIP(), []int{13}
1614}
1615
1616func (x *EditCommentRequest) GetRepo() string {
1617	if x != nil {
1618		return x.Repo
1619	}
1620	return ""
1621}
1622
1623func (x *EditCommentRequest) GetNumber() int64 {
1624	if x != nil {
1625		return x.Number
1626	}
1627	return 0
1628}
1629
1630func (x *EditCommentRequest) GetCommentId() string {
1631	if x != nil {
1632		return x.CommentId
1633	}
1634	return ""
1635}
1636
1637func (x *EditCommentRequest) GetText() string {
1638	if x != nil {
1639		return x.Text
1640	}
1641	return ""
1642}
1643
1644// EditCommentResponse holds the comment after the edit.
1645type EditCommentResponse struct {
1646	state protoimpl.MessageState `protogen:"open.v1"`
1647	// Comment is the updated comment.
1648	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1649	unknownFields protoimpl.UnknownFields
1650	sizeCache     protoimpl.SizeCache
1651}
1652
1653func (x *EditCommentResponse) Reset() {
1654	*x = EditCommentResponse{}
1655	mi := &file_ermite_merge_request_proto_msgTypes[14]
1656	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1657	ms.StoreMessageInfo(mi)
1658}
1659
1660func (x *EditCommentResponse) String() string {
1661	return protoimpl.X.MessageStringOf(x)
1662}
1663
1664func (*EditCommentResponse) ProtoMessage() {}
1665
1666func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {
1667	mi := &file_ermite_merge_request_proto_msgTypes[14]
1668	if x != nil {
1669		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1670		if ms.LoadMessageInfo() == nil {
1671			ms.StoreMessageInfo(mi)
1672		}
1673		return ms
1674	}
1675	return mi.MessageOf(x)
1676}
1677
1678// Deprecated: Use EditCommentResponse.ProtoReflect.Descriptor instead.
1679func (*EditCommentResponse) Descriptor() ([]byte, []int) {
1680	return file_ermite_merge_request_proto_rawDescGZIP(), []int{14}
1681}
1682
1683func (x *EditCommentResponse) GetComment() *Comment {
1684	if x != nil {
1685		return x.Comment
1686	}
1687	return nil
1688}
1689
1690// DeleteCommentRequest names the comment to delete.
1691type DeleteCommentRequest struct {
1692	state protoimpl.MessageState `protogen:"open.v1"`
1693	// Repo is the repository name.
1694	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1695	// Number is the merge request number.
1696	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1697	// CommentId is the Comment.id to delete.
1698	CommentId     string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
1699	unknownFields protoimpl.UnknownFields
1700	sizeCache     protoimpl.SizeCache
1701}
1702
1703func (x *DeleteCommentRequest) Reset() {
1704	*x = DeleteCommentRequest{}
1705	mi := &file_ermite_merge_request_proto_msgTypes[15]
1706	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1707	ms.StoreMessageInfo(mi)
1708}
1709
1710func (x *DeleteCommentRequest) String() string {
1711	return protoimpl.X.MessageStringOf(x)
1712}
1713
1714func (*DeleteCommentRequest) ProtoMessage() {}
1715
1716func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {
1717	mi := &file_ermite_merge_request_proto_msgTypes[15]
1718	if x != nil {
1719		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1720		if ms.LoadMessageInfo() == nil {
1721			ms.StoreMessageInfo(mi)
1722		}
1723		return ms
1724	}
1725	return mi.MessageOf(x)
1726}
1727
1728// Deprecated: Use DeleteCommentRequest.ProtoReflect.Descriptor instead.
1729func (*DeleteCommentRequest) Descriptor() ([]byte, []int) {
1730	return file_ermite_merge_request_proto_rawDescGZIP(), []int{15}
1731}
1732
1733func (x *DeleteCommentRequest) GetRepo() string {
1734	if x != nil {
1735		return x.Repo
1736	}
1737	return ""
1738}
1739
1740func (x *DeleteCommentRequest) GetNumber() int64 {
1741	if x != nil {
1742		return x.Number
1743	}
1744	return 0
1745}
1746
1747func (x *DeleteCommentRequest) GetCommentId() string {
1748	if x != nil {
1749		return x.CommentId
1750	}
1751	return ""
1752}
1753
1754// DeleteCommentResponse holds the comment after the deletion.
1755type DeleteCommentResponse struct {
1756	state protoimpl.MessageState `protogen:"open.v1"`
1757	// Comment is the deleted comment.
1758	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1759	unknownFields protoimpl.UnknownFields
1760	sizeCache     protoimpl.SizeCache
1761}
1762
1763func (x *DeleteCommentResponse) Reset() {
1764	*x = DeleteCommentResponse{}
1765	mi := &file_ermite_merge_request_proto_msgTypes[16]
1766	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1767	ms.StoreMessageInfo(mi)
1768}
1769
1770func (x *DeleteCommentResponse) String() string {
1771	return protoimpl.X.MessageStringOf(x)
1772}
1773
1774func (*DeleteCommentResponse) ProtoMessage() {}
1775
1776func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {
1777	mi := &file_ermite_merge_request_proto_msgTypes[16]
1778	if x != nil {
1779		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1780		if ms.LoadMessageInfo() == nil {
1781			ms.StoreMessageInfo(mi)
1782		}
1783		return ms
1784	}
1785	return mi.MessageOf(x)
1786}
1787
1788// Deprecated: Use DeleteCommentResponse.ProtoReflect.Descriptor instead.
1789func (*DeleteCommentResponse) Descriptor() ([]byte, []int) {
1790	return file_ermite_merge_request_proto_rawDescGZIP(), []int{16}
1791}
1792
1793func (x *DeleteCommentResponse) GetComment() *Comment {
1794	if x != nil {
1795		return x.Comment
1796	}
1797	return nil
1798}
1799
1800// ResolveCommentRequest changes the resolved state of a comment.
1801type ResolveCommentRequest struct {
1802	state protoimpl.MessageState `protogen:"open.v1"`
1803	// Repo is the repository name.
1804	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1805	// Number is the merge request number.
1806	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1807	// CommentId is the Comment.id to change.
1808	CommentId string `protobuf:"bytes,3,opt,name=comment_id,json=commentId,proto3" json:"comment_id,omitempty"`
1809	// Resolved is the new state: true to resolve, false to unresolve.
1810	Resolved      bool `protobuf:"varint,4,opt,name=resolved,proto3" json:"resolved,omitempty"`
1811	unknownFields protoimpl.UnknownFields
1812	sizeCache     protoimpl.SizeCache
1813}
1814
1815func (x *ResolveCommentRequest) Reset() {
1816	*x = ResolveCommentRequest{}
1817	mi := &file_ermite_merge_request_proto_msgTypes[17]
1818	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1819	ms.StoreMessageInfo(mi)
1820}
1821
1822func (x *ResolveCommentRequest) String() string {
1823	return protoimpl.X.MessageStringOf(x)
1824}
1825
1826func (*ResolveCommentRequest) ProtoMessage() {}
1827
1828func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {
1829	mi := &file_ermite_merge_request_proto_msgTypes[17]
1830	if x != nil {
1831		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1832		if ms.LoadMessageInfo() == nil {
1833			ms.StoreMessageInfo(mi)
1834		}
1835		return ms
1836	}
1837	return mi.MessageOf(x)
1838}
1839
1840// Deprecated: Use ResolveCommentRequest.ProtoReflect.Descriptor instead.
1841func (*ResolveCommentRequest) Descriptor() ([]byte, []int) {
1842	return file_ermite_merge_request_proto_rawDescGZIP(), []int{17}
1843}
1844
1845func (x *ResolveCommentRequest) GetRepo() string {
1846	if x != nil {
1847		return x.Repo
1848	}
1849	return ""
1850}
1851
1852func (x *ResolveCommentRequest) GetNumber() int64 {
1853	if x != nil {
1854		return x.Number
1855	}
1856	return 0
1857}
1858
1859func (x *ResolveCommentRequest) GetCommentId() string {
1860	if x != nil {
1861		return x.CommentId
1862	}
1863	return ""
1864}
1865
1866func (x *ResolveCommentRequest) GetResolved() bool {
1867	if x != nil {
1868		return x.Resolved
1869	}
1870	return false
1871}
1872
1873// ResolveCommentResponse holds the comment after the change.
1874type ResolveCommentResponse struct {
1875	state protoimpl.MessageState `protogen:"open.v1"`
1876	// Comment is the updated comment.
1877	Comment       *Comment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
1878	unknownFields protoimpl.UnknownFields
1879	sizeCache     protoimpl.SizeCache
1880}
1881
1882func (x *ResolveCommentResponse) Reset() {
1883	*x = ResolveCommentResponse{}
1884	mi := &file_ermite_merge_request_proto_msgTypes[18]
1885	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1886	ms.StoreMessageInfo(mi)
1887}
1888
1889func (x *ResolveCommentResponse) String() string {
1890	return protoimpl.X.MessageStringOf(x)
1891}
1892
1893func (*ResolveCommentResponse) ProtoMessage() {}
1894
1895func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {
1896	mi := &file_ermite_merge_request_proto_msgTypes[18]
1897	if x != nil {
1898		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1899		if ms.LoadMessageInfo() == nil {
1900			ms.StoreMessageInfo(mi)
1901		}
1902		return ms
1903	}
1904	return mi.MessageOf(x)
1905}
1906
1907// Deprecated: Use ResolveCommentResponse.ProtoReflect.Descriptor instead.
1908func (*ResolveCommentResponse) Descriptor() ([]byte, []int) {
1909	return file_ermite_merge_request_proto_rawDescGZIP(), []int{18}
1910}
1911
1912func (x *ResolveCommentResponse) GetComment() *Comment {
1913	if x != nil {
1914		return x.Comment
1915	}
1916	return nil
1917}
1918
1919// CloseMergeRequestRequest names the merge request to close.
1920type CloseMergeRequestRequest struct {
1921	state protoimpl.MessageState `protogen:"open.v1"`
1922	// Repo is the repository name.
1923	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1924	// Number is the merge request number.
1925	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1926	unknownFields protoimpl.UnknownFields
1927	sizeCache     protoimpl.SizeCache
1928}
1929
1930func (x *CloseMergeRequestRequest) Reset() {
1931	*x = CloseMergeRequestRequest{}
1932	mi := &file_ermite_merge_request_proto_msgTypes[19]
1933	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1934	ms.StoreMessageInfo(mi)
1935}
1936
1937func (x *CloseMergeRequestRequest) String() string {
1938	return protoimpl.X.MessageStringOf(x)
1939}
1940
1941func (*CloseMergeRequestRequest) ProtoMessage() {}
1942
1943func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {
1944	mi := &file_ermite_merge_request_proto_msgTypes[19]
1945	if x != nil {
1946		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1947		if ms.LoadMessageInfo() == nil {
1948			ms.StoreMessageInfo(mi)
1949		}
1950		return ms
1951	}
1952	return mi.MessageOf(x)
1953}
1954
1955// Deprecated: Use CloseMergeRequestRequest.ProtoReflect.Descriptor instead.
1956func (*CloseMergeRequestRequest) Descriptor() ([]byte, []int) {
1957	return file_ermite_merge_request_proto_rawDescGZIP(), []int{19}
1958}
1959
1960func (x *CloseMergeRequestRequest) GetRepo() string {
1961	if x != nil {
1962		return x.Repo
1963	}
1964	return ""
1965}
1966
1967func (x *CloseMergeRequestRequest) GetNumber() int64 {
1968	if x != nil {
1969		return x.Number
1970	}
1971	return 0
1972}
1973
1974// CloseMergeRequestResponse holds the merge request after closing.
1975type CloseMergeRequestResponse struct {
1976	state protoimpl.MessageState `protogen:"open.v1"`
1977	// MergeRequest is the closed merge request.
1978	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1979	unknownFields protoimpl.UnknownFields
1980	sizeCache     protoimpl.SizeCache
1981}
1982
1983func (x *CloseMergeRequestResponse) Reset() {
1984	*x = CloseMergeRequestResponse{}
1985	mi := &file_ermite_merge_request_proto_msgTypes[20]
1986	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1987	ms.StoreMessageInfo(mi)
1988}
1989
1990func (x *CloseMergeRequestResponse) String() string {
1991	return protoimpl.X.MessageStringOf(x)
1992}
1993
1994func (*CloseMergeRequestResponse) ProtoMessage() {}
1995
1996func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {
1997	mi := &file_ermite_merge_request_proto_msgTypes[20]
1998	if x != nil {
1999		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2000		if ms.LoadMessageInfo() == nil {
2001			ms.StoreMessageInfo(mi)
2002		}
2003		return ms
2004	}
2005	return mi.MessageOf(x)
2006}
2007
2008// Deprecated: Use CloseMergeRequestResponse.ProtoReflect.Descriptor instead.
2009func (*CloseMergeRequestResponse) Descriptor() ([]byte, []int) {
2010	return file_ermite_merge_request_proto_rawDescGZIP(), []int{20}
2011}
2012
2013func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {
2014	if x != nil {
2015		return x.MergeRequest
2016	}
2017	return nil
2018}
2019
2020// MarkReadyRequest names the draft merge request to mark ready.
2021type MarkReadyRequest struct {
2022	state protoimpl.MessageState `protogen:"open.v1"`
2023	// Repo is the repository name.
2024	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2025	// Number is the merge request number.
2026	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2027	unknownFields protoimpl.UnknownFields
2028	sizeCache     protoimpl.SizeCache
2029}
2030
2031func (x *MarkReadyRequest) Reset() {
2032	*x = MarkReadyRequest{}
2033	mi := &file_ermite_merge_request_proto_msgTypes[21]
2034	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2035	ms.StoreMessageInfo(mi)
2036}
2037
2038func (x *MarkReadyRequest) String() string {
2039	return protoimpl.X.MessageStringOf(x)
2040}
2041
2042func (*MarkReadyRequest) ProtoMessage() {}
2043
2044func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
2045	mi := &file_ermite_merge_request_proto_msgTypes[21]
2046	if x != nil {
2047		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048		if ms.LoadMessageInfo() == nil {
2049			ms.StoreMessageInfo(mi)
2050		}
2051		return ms
2052	}
2053	return mi.MessageOf(x)
2054}
2055
2056// Deprecated: Use MarkReadyRequest.ProtoReflect.Descriptor instead.
2057func (*MarkReadyRequest) Descriptor() ([]byte, []int) {
2058	return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2059}
2060
2061func (x *MarkReadyRequest) GetRepo() string {
2062	if x != nil {
2063		return x.Repo
2064	}
2065	return ""
2066}
2067
2068func (x *MarkReadyRequest) GetNumber() int64 {
2069	if x != nil {
2070		return x.Number
2071	}
2072	return 0
2073}
2074
2075// MarkReadyResponse holds the merge request after marking it ready.
2076type MarkReadyResponse struct {
2077	state protoimpl.MessageState `protogen:"open.v1"`
2078	// MergeRequest is the merge request with its title stripped of the draft
2079	// prefix.
2080	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2081	unknownFields protoimpl.UnknownFields
2082	sizeCache     protoimpl.SizeCache
2083}
2084
2085func (x *MarkReadyResponse) Reset() {
2086	*x = MarkReadyResponse{}
2087	mi := &file_ermite_merge_request_proto_msgTypes[22]
2088	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2089	ms.StoreMessageInfo(mi)
2090}
2091
2092func (x *MarkReadyResponse) String() string {
2093	return protoimpl.X.MessageStringOf(x)
2094}
2095
2096func (*MarkReadyResponse) ProtoMessage() {}
2097
2098func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
2099	mi := &file_ermite_merge_request_proto_msgTypes[22]
2100	if x != nil {
2101		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2102		if ms.LoadMessageInfo() == nil {
2103			ms.StoreMessageInfo(mi)
2104		}
2105		return ms
2106	}
2107	return mi.MessageOf(x)
2108}
2109
2110// Deprecated: Use MarkReadyResponse.ProtoReflect.Descriptor instead.
2111func (*MarkReadyResponse) Descriptor() ([]byte, []int) {
2112	return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2113}
2114
2115func (x *MarkReadyResponse) GetMergeRequest() *MergeRequest {
2116	if x != nil {
2117		return x.MergeRequest
2118	}
2119	return nil
2120}
2121
2122// MergeMergeRequestRequest describes the merge to perform.
2123type MergeMergeRequestRequest struct {
2124	state protoimpl.MessageState `protogen:"open.v1"`
2125	// Repo is the repository name.
2126	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2127	// Number is the merge request number.
2128	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2129	// Mode is how to merge. MERGE_MODE_UNSPECIFIED means fast-forward. The mode
2130	// must be in RepoSettings.allowed_merge_modes of the repository.
2131	Mode MergeMode `protobuf:"varint,3,opt,name=mode,proto3,enum=ermite.MergeMode" json:"mode,omitempty"`
2132	// HeadId is the full id of the commit the caller reviewed, that is the
2133	// MergeRequest.head_id it was shown. Required. The merge happens only if the
2134	// source branch still points to it.
2135	HeadId string `protobuf:"bytes,4,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2136	// DeleteSourceBranch deletes the source branch after the merge. The merge
2137	// is refused before anything changes when the source branch is the default
2138	// branch of the repository or the source or target of another open merge
2139	// request. Servers without the "merge_requests.delete_branch" feature ignore
2140	// it.
2141	DeleteSourceBranch bool `protobuf:"varint,5,opt,name=delete_source_branch,json=deleteSourceBranch,proto3" json:"delete_source_branch,omitempty"`
2142	// IgnoreChecks merges whatever the checks say. Needs the mr:force-merge
2143	// scope (permission_denied otherwise). Servers without the
2144	// "merge_requests.ignore_checks" feature ignore it: check the feature
2145	// before setting it.
2146	IgnoreChecks  bool `protobuf:"varint,6,opt,name=ignore_checks,json=ignoreChecks,proto3" json:"ignore_checks,omitempty"`
2147	unknownFields protoimpl.UnknownFields
2148	sizeCache     protoimpl.SizeCache
2149}
2150
2151func (x *MergeMergeRequestRequest) Reset() {
2152	*x = MergeMergeRequestRequest{}
2153	mi := &file_ermite_merge_request_proto_msgTypes[23]
2154	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2155	ms.StoreMessageInfo(mi)
2156}
2157
2158func (x *MergeMergeRequestRequest) String() string {
2159	return protoimpl.X.MessageStringOf(x)
2160}
2161
2162func (*MergeMergeRequestRequest) ProtoMessage() {}
2163
2164func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2165	mi := &file_ermite_merge_request_proto_msgTypes[23]
2166	if x != nil {
2167		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2168		if ms.LoadMessageInfo() == nil {
2169			ms.StoreMessageInfo(mi)
2170		}
2171		return ms
2172	}
2173	return mi.MessageOf(x)
2174}
2175
2176// Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
2177func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
2178	return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2179}
2180
2181func (x *MergeMergeRequestRequest) GetRepo() string {
2182	if x != nil {
2183		return x.Repo
2184	}
2185	return ""
2186}
2187
2188func (x *MergeMergeRequestRequest) GetNumber() int64 {
2189	if x != nil {
2190		return x.Number
2191	}
2192	return 0
2193}
2194
2195func (x *MergeMergeRequestRequest) GetMode() MergeMode {
2196	if x != nil {
2197		return x.Mode
2198	}
2199	return MergeMode_MERGE_MODE_UNSPECIFIED
2200}
2201
2202func (x *MergeMergeRequestRequest) GetHeadId() string {
2203	if x != nil {
2204		return x.HeadId
2205	}
2206	return ""
2207}
2208
2209func (x *MergeMergeRequestRequest) GetDeleteSourceBranch() bool {
2210	if x != nil {
2211		return x.DeleteSourceBranch
2212	}
2213	return false
2214}
2215
2216func (x *MergeMergeRequestRequest) GetIgnoreChecks() bool {
2217	if x != nil {
2218		return x.IgnoreChecks
2219	}
2220	return false
2221}
2222
2223// MergeMergeRequestResponse holds the merged merge request.
2224type MergeMergeRequestResponse struct {
2225	state protoimpl.MessageState `protogen:"open.v1"`
2226	// MergeRequest is the merge request after the merge: state MERGED,
2227	// merged_commit_id set to the new tip of the target branch and merge_mode
2228	// set to the mode used.
2229	MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2230	// SourceBranchDeleted is true when delete_source_branch was set: the server
2231	// deletes the branch after answering. The deletion is skipped, and the
2232	// branch kept, if the branch moved or another open merge request uses it
2233	// by then; the merge stands either way. Watch reports the deletion with a
2234	// Pushed event for the source branch.
2235	SourceBranchDeleted bool `protobuf:"varint,2,opt,name=source_branch_deleted,json=sourceBranchDeleted,proto3" json:"source_branch_deleted,omitempty"`
2236	unknownFields       protoimpl.UnknownFields
2237	sizeCache           protoimpl.SizeCache
2238}
2239
2240func (x *MergeMergeRequestResponse) Reset() {
2241	*x = MergeMergeRequestResponse{}
2242	mi := &file_ermite_merge_request_proto_msgTypes[24]
2243	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2244	ms.StoreMessageInfo(mi)
2245}
2246
2247func (x *MergeMergeRequestResponse) String() string {
2248	return protoimpl.X.MessageStringOf(x)
2249}
2250
2251func (*MergeMergeRequestResponse) ProtoMessage() {}
2252
2253func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2254	mi := &file_ermite_merge_request_proto_msgTypes[24]
2255	if x != nil {
2256		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2257		if ms.LoadMessageInfo() == nil {
2258			ms.StoreMessageInfo(mi)
2259		}
2260		return ms
2261	}
2262	return mi.MessageOf(x)
2263}
2264
2265// Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
2266func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2267	return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
2268}
2269
2270func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
2271	if x != nil {
2272		return x.MergeRequest
2273	}
2274	return nil
2275}
2276
2277func (x *MergeMergeRequestResponse) GetSourceBranchDeleted() bool {
2278	if x != nil {
2279		return x.SourceBranchDeleted
2280	}
2281	return false
2282}
2283
2284// EnableAutoMergeRequest describes the auto-merge to enable.
2285type EnableAutoMergeRequest struct {
2286	state protoimpl.MessageState `protogen:"open.v1"`
2287	// Repo is the repository name.
2288	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2289	// Number is the merge request number.
2290	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2291	// Mode is how to merge. MERGE_MODE_UNSPECIFIED means fast-forward. The mode
2292	// must be in RepoSettings.allowed_merge_modes of the repository.
2293	Mode MergeMode `protobuf:"varint,3,opt,name=mode,proto3,enum=ermite.MergeMode" json:"mode,omitempty"`
2294	// HeadId is the full id of the commit the caller reviewed, that is the
2295	// MergeRequest.head_id it was shown. Required. The auto-merge is enabled
2296	// only if the source branch still points to it; failed_precondition (branch
2297	// moved) otherwise.
2298	HeadId        string `protobuf:"bytes,4,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2299	unknownFields protoimpl.UnknownFields
2300	sizeCache     protoimpl.SizeCache
2301}
2302
2303func (x *EnableAutoMergeRequest) Reset() {
2304	*x = EnableAutoMergeRequest{}
2305	mi := &file_ermite_merge_request_proto_msgTypes[25]
2306	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2307	ms.StoreMessageInfo(mi)
2308}
2309
2310func (x *EnableAutoMergeRequest) String() string {
2311	return protoimpl.X.MessageStringOf(x)
2312}
2313
2314func (*EnableAutoMergeRequest) ProtoMessage() {}
2315
2316func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2317	mi := &file_ermite_merge_request_proto_msgTypes[25]
2318	if x != nil {
2319		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2320		if ms.LoadMessageInfo() == nil {
2321			ms.StoreMessageInfo(mi)
2322		}
2323		return ms
2324	}
2325	return mi.MessageOf(x)
2326}
2327
2328// Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.
2329func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {
2330	return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
2331}
2332
2333func (x *EnableAutoMergeRequest) GetRepo() string {
2334	if x != nil {
2335		return x.Repo
2336	}
2337	return ""
2338}
2339
2340func (x *EnableAutoMergeRequest) GetNumber() int64 {
2341	if x != nil {
2342		return x.Number
2343	}
2344	return 0
2345}
2346
2347func (x *EnableAutoMergeRequest) GetMode() MergeMode {
2348	if x != nil {
2349		return x.Mode
2350	}
2351	return MergeMode_MERGE_MODE_UNSPECIFIED
2352}
2353
2354func (x *EnableAutoMergeRequest) GetHeadId() string {
2355	if x != nil {
2356		return x.HeadId
2357	}
2358	return ""
2359}
2360
2361// EnableAutoMergeResponse holds the merge request with auto-merge enabled.
2362type EnableAutoMergeResponse struct {
2363	state protoimpl.MessageState `protogen:"open.v1"`
2364	// MergeRequest is the merge request, with auto_merge set.
2365	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2366	unknownFields protoimpl.UnknownFields
2367	sizeCache     protoimpl.SizeCache
2368}
2369
2370func (x *EnableAutoMergeResponse) Reset() {
2371	*x = EnableAutoMergeResponse{}
2372	mi := &file_ermite_merge_request_proto_msgTypes[26]
2373	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2374	ms.StoreMessageInfo(mi)
2375}
2376
2377func (x *EnableAutoMergeResponse) String() string {
2378	return protoimpl.X.MessageStringOf(x)
2379}
2380
2381func (*EnableAutoMergeResponse) ProtoMessage() {}
2382
2383func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2384	mi := &file_ermite_merge_request_proto_msgTypes[26]
2385	if x != nil {
2386		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2387		if ms.LoadMessageInfo() == nil {
2388			ms.StoreMessageInfo(mi)
2389		}
2390		return ms
2391	}
2392	return mi.MessageOf(x)
2393}
2394
2395// Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.
2396func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {
2397	return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
2398}
2399
2400func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {
2401	if x != nil {
2402		return x.MergeRequest
2403	}
2404	return nil
2405}
2406
2407// CancelAutoMergeRequest names the merge request whose auto-merge to cancel.
2408type CancelAutoMergeRequest struct {
2409	state protoimpl.MessageState `protogen:"open.v1"`
2410	// Repo is the repository name.
2411	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2412	// Number is the merge request number.
2413	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2414	unknownFields protoimpl.UnknownFields
2415	sizeCache     protoimpl.SizeCache
2416}
2417
2418func (x *CancelAutoMergeRequest) Reset() {
2419	*x = CancelAutoMergeRequest{}
2420	mi := &file_ermite_merge_request_proto_msgTypes[27]
2421	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2422	ms.StoreMessageInfo(mi)
2423}
2424
2425func (x *CancelAutoMergeRequest) String() string {
2426	return protoimpl.X.MessageStringOf(x)
2427}
2428
2429func (*CancelAutoMergeRequest) ProtoMessage() {}
2430
2431func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2432	mi := &file_ermite_merge_request_proto_msgTypes[27]
2433	if x != nil {
2434		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2435		if ms.LoadMessageInfo() == nil {
2436			ms.StoreMessageInfo(mi)
2437		}
2438		return ms
2439	}
2440	return mi.MessageOf(x)
2441}
2442
2443// Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.
2444func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {
2445	return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
2446}
2447
2448func (x *CancelAutoMergeRequest) GetRepo() string {
2449	if x != nil {
2450		return x.Repo
2451	}
2452	return ""
2453}
2454
2455func (x *CancelAutoMergeRequest) GetNumber() int64 {
2456	if x != nil {
2457		return x.Number
2458	}
2459	return 0
2460}
2461
2462// CancelAutoMergeResponse holds the merge request after the cancellation.
2463type CancelAutoMergeResponse struct {
2464	state protoimpl.MessageState `protogen:"open.v1"`
2465	// MergeRequest is the merge request, with auto_merge unset.
2466	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2467	unknownFields protoimpl.UnknownFields
2468	sizeCache     protoimpl.SizeCache
2469}
2470
2471func (x *CancelAutoMergeResponse) Reset() {
2472	*x = CancelAutoMergeResponse{}
2473	mi := &file_ermite_merge_request_proto_msgTypes[28]
2474	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2475	ms.StoreMessageInfo(mi)
2476}
2477
2478func (x *CancelAutoMergeResponse) String() string {
2479	return protoimpl.X.MessageStringOf(x)
2480}
2481
2482func (*CancelAutoMergeResponse) ProtoMessage() {}
2483
2484func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2485	mi := &file_ermite_merge_request_proto_msgTypes[28]
2486	if x != nil {
2487		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2488		if ms.LoadMessageInfo() == nil {
2489			ms.StoreMessageInfo(mi)
2490		}
2491		return ms
2492	}
2493	return mi.MessageOf(x)
2494}
2495
2496// Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.
2497func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {
2498	return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
2499}
2500
2501func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {
2502	if x != nil {
2503		return x.MergeRequest
2504	}
2505	return nil
2506}
2507
2508// MarkReadRequest records a read position.
2509type MarkReadRequest struct {
2510	state protoimpl.MessageState `protogen:"open.v1"`
2511	// Repo is the repository name.
2512	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2513	// Number is the merge request number.
2514	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2515	// HeadId is the full id of the commit the caller has reviewed, usually the
2516	// MergeRequest.head_id it was shown. Empty means the current head of the
2517	// source branch.
2518	HeadId        string `protobuf:"bytes,3,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2519	unknownFields protoimpl.UnknownFields
2520	sizeCache     protoimpl.SizeCache
2521}
2522
2523func (x *MarkReadRequest) Reset() {
2524	*x = MarkReadRequest{}
2525	mi := &file_ermite_merge_request_proto_msgTypes[29]
2526	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2527	ms.StoreMessageInfo(mi)
2528}
2529
2530func (x *MarkReadRequest) String() string {
2531	return protoimpl.X.MessageStringOf(x)
2532}
2533
2534func (*MarkReadRequest) ProtoMessage() {}
2535
2536func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2537	mi := &file_ermite_merge_request_proto_msgTypes[29]
2538	if x != nil {
2539		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2540		if ms.LoadMessageInfo() == nil {
2541			ms.StoreMessageInfo(mi)
2542		}
2543		return ms
2544	}
2545	return mi.MessageOf(x)
2546}
2547
2548// Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
2549func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2550	return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}
2551}
2552
2553func (x *MarkReadRequest) GetRepo() string {
2554	if x != nil {
2555		return x.Repo
2556	}
2557	return ""
2558}
2559
2560func (x *MarkReadRequest) GetNumber() int64 {
2561	if x != nil {
2562		return x.Number
2563	}
2564	return 0
2565}
2566
2567func (x *MarkReadRequest) GetHeadId() string {
2568	if x != nil {
2569		return x.HeadId
2570	}
2571	return ""
2572}
2573
2574// MarkReadResponse is empty.
2575type MarkReadResponse struct {
2576	state         protoimpl.MessageState `protogen:"open.v1"`
2577	unknownFields protoimpl.UnknownFields
2578	sizeCache     protoimpl.SizeCache
2579}
2580
2581func (x *MarkReadResponse) Reset() {
2582	*x = MarkReadResponse{}
2583	mi := &file_ermite_merge_request_proto_msgTypes[30]
2584	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2585	ms.StoreMessageInfo(mi)
2586}
2587
2588func (x *MarkReadResponse) String() string {
2589	return protoimpl.X.MessageStringOf(x)
2590}
2591
2592func (*MarkReadResponse) ProtoMessage() {}
2593
2594func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2595	mi := &file_ermite_merge_request_proto_msgTypes[30]
2596	if x != nil {
2597		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2598		if ms.LoadMessageInfo() == nil {
2599			ms.StoreMessageInfo(mi)
2600		}
2601		return ms
2602	}
2603	return mi.MessageOf(x)
2604}
2605
2606// Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
2607func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2608	return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}
2609}
2610
2611var File_ermite_merge_request_proto protoreflect.FileDescriptor
2612
2613const file_ermite_merge_request_proto_rawDesc = "" +
2614	"\n" +
2615	"\x1aermite/merge_request.proto\x12\x06ermite\x1a\x10ermite/git.proto\x1a\x12ermite/types.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xce\x02\n" +
2616	"\fMergeability\x12/\n" +
2617	"\x05state\x18\x01 \x01(\x0e2\x19.ermite.MergeabilityStateR\x05state\x12\x1b\n" +
2618	"\ttarget_id\x18\x02 \x01(\tR\btargetId\x12\x17\n" +
2619	"\ahead_id\x18\x03 \x01(\tR\x06headId\x12\x16\n" +
2620	"\x06behind\x18\x04 \x01(\x05R\x06behind\x12#\n" +
2621	"\rbehind_capped\x18\x05 \x01(\bR\fbehindCapped\x12%\n" +
2622	"\x0econflict_paths\x18\x06 \x03(\tR\rconflictPaths\x128\n" +
2623	"\x18conflict_paths_truncated\x18\a \x01(\bR\x16conflictPathsTruncated\x129\n" +
2624	"\n" +
2625	"checked_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcheckedAt\"\xa5\x01\n" +
2626	"\tAutoMerge\x12%\n" +
2627	"\x04mode\x18\x01 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2628	"\ahead_id\x18\x02 \x01(\tR\x06headId\x12\x1d\n" +
2629	"\n" +
2630	"enabled_by\x18\x03 \x01(\tR\tenabledBy\x129\n" +
2631	"\n" +
2632	"enabled_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tenabledAt\"\xfd\x04\n" +
2633	"\fMergeRequest\x12\x12\n" +
2634	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2635	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x14\n" +
2636	"\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
2637	"\vdescription\x18\x04 \x01(\tR\vdescription\x12#\n" +
2638	"\rsource_branch\x18\x05 \x01(\tR\fsourceBranch\x12#\n" +
2639	"\rtarget_branch\x18\x06 \x01(\tR\ftargetBranch\x12/\n" +
2640	"\x05state\x18\a \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x16\n" +
2641	"\x06author\x18\b \x01(\tR\x06author\x129\n" +
2642	"\n" +
2643	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2644	"\n" +
2645	"updated_at\x18\n" +
2646	" \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x17\n" +
2647	"\ahead_id\x18\v \x01(\tR\x06headId\x12(\n" +
2648	"\x10merged_commit_id\x18\f \x01(\tR\x0emergedCommitId\x120\n" +
2649	"\n" +
2650	"merge_mode\x18\r \x01(\x0e2\x11.ermite.MergeModeR\tmergeMode\x128\n" +
2651	"\fmergeability\x18\x0e \x01(\v2\x14.ermite.MergeabilityR\fmergeability\x120\n" +
2652	"\n" +
2653	"auto_merge\x18\x0f \x01(\v2\x11.ermite.AutoMergeR\tautoMerge\x12\x1f\n" +
2654	"\vauto_merged\x18\x10 \x01(\bR\n" +
2655	"autoMerged\"\xbf\x03\n" +
2656	"\aComment\x12\x0e\n" +
2657	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
2658	"\x06author\x18\x02 \x01(\tR\x06author\x12\x12\n" +
2659	"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
2660	"\x04line\x18\x04 \x01(\x05R\x04line\x12$\n" +
2661	"\x04side\x18\x05 \x01(\x0e2\x10.ermite.DiffSideR\x04side\x12\x1b\n" +
2662	"\tcommit_id\x18\x06 \x01(\tR\bcommitId\x12\x12\n" +
2663	"\x04text\x18\a \x01(\tR\x04text\x12\x1a\n" +
2664	"\bresolved\x18\b \x01(\bR\bresolved\x129\n" +
2665	"\n" +
2666	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x19\n" +
2667	"\breply_to\x18\n" +
2668	" \x01(\tR\areplyTo\x12\x1d\n" +
2669	"\n" +
2670	"start_line\x18\v \x01(\x05R\tstartLine\x12)\n" +
2671	"\averdict\x18\f \x01(\x0e2\x0f.ermite.VerdictR\averdict\x127\n" +
2672	"\tedited_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\beditedAt\x12\x18\n" +
2673	"\adeleted\x18\x0e \x01(\bR\adeleted\"\xdf\x01\n" +
2674	"\rAuthorVerdict\x12\x16\n" +
2675	"\x06author\x18\x01 \x01(\tR\x06author\x12)\n" +
2676	"\averdict\x18\x02 \x01(\x0e2\x0f.ermite.VerdictR\averdict\x12\x1d\n" +
2677	"\n" +
2678	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x1b\n" +
2679	"\tcommit_id\x18\x04 \x01(\tR\bcommitId\x129\n" +
2680	"\n" +
2681	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x14\n" +
2682	"\x05stale\x18\x06 \x01(\bR\x05stale\"\xb1\x01\n" +
2683	"\x19CreateMergeRequestRequest\x12\x12\n" +
2684	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x14\n" +
2685	"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
2686	"\vdescription\x18\x03 \x01(\tR\vdescription\x12#\n" +
2687	"\rsource_branch\x18\x04 \x01(\tR\fsourceBranch\x12#\n" +
2688	"\rtarget_branch\x18\x05 \x01(\tR\ftargetBranch\"W\n" +
2689	"\x1aCreateMergeRequestResponse\x129\n" +
2690	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\x9b\x01\n" +
2691	"\x18ListMergeRequestsRequest\x12\x12\n" +
2692	"\x04repo\x18\x01 \x01(\tR\x04repo\x12/\n" +
2693	"\x05state\x18\x02 \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x1b\n" +
2694	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" +
2695	"\n" +
2696	"page_token\x18\x04 \x01(\tR\tpageToken\"\x80\x01\n" +
2697	"\x19ListMergeRequestsResponse\x12;\n" +
2698	"\x0emerge_requests\x18\x01 \x03(\v2\x14.ermite.MergeRequestR\rmergeRequests\x12&\n" +
2699	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"l\n" +
2700	"\x16GetMergeRequestRequest\x12\x12\n" +
2701	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2702	"\x06number\x18\x02 \x01(\x03R\x06number\x12&\n" +
2703	"\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xc0\x03\n" +
2704	"\x17GetMergeRequestResponse\x129\n" +
2705	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x12(\n" +
2706	"\acommits\x18\x02 \x03(\v2\x0e.ermite.CommitR\acommits\x12+\n" +
2707	"\x11commits_truncated\x18\x03 \x01(\bR\x10commitsTruncated\x12 \n" +
2708	"\fdiff_base_id\x18\x04 \x01(\tR\n" +
2709	"diffBaseId\x12'\n" +
2710	"\x05stats\x18\x05 \x01(\v2\x11.ermite.DiffStatsR\x05stats\x12 \n" +
2711	"\x04diff\x18\x06 \x01(\v2\f.ermite.DiffR\x04diff\x12+\n" +
2712	"\bcomments\x18\a \x03(\v2\x0f.ermite.CommentR\bcomments\x12 \n" +
2713	"\flast_read_id\x18\b \x01(\tR\n" +
2714	"lastReadId\x12$\n" +
2715	"\x0elast_read_lost\x18\t \x01(\bR\flastReadLost\x121\n" +
2716	"\bverdicts\x18\n" +
2717	" \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\"\x86\x02\n" +
2718	"\x11AddCommentRequest\x12\x12\n" +
2719	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2720	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +
2721	"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
2722	"\x04line\x18\x04 \x01(\x05R\x04line\x12$\n" +
2723	"\x04side\x18\x05 \x01(\x0e2\x10.ermite.DiffSideR\x04side\x12\x12\n" +
2724	"\x04text\x18\x06 \x01(\tR\x04text\x12\x19\n" +
2725	"\breply_to\x18\a \x01(\tR\areplyTo\x12\x1d\n" +
2726	"\n" +
2727	"start_line\x18\b \x01(\x05R\tstartLine\x12)\n" +
2728	"\averdict\x18\t \x01(\x0e2\x0f.ermite.VerdictR\averdict\"?\n" +
2729	"\x12AddCommentResponse\x12)\n" +
2730	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"s\n" +
2731	"\x12EditCommentRequest\x12\x12\n" +
2732	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2733	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2734	"\n" +
2735	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x12\n" +
2736	"\x04text\x18\x04 \x01(\tR\x04text\"@\n" +
2737	"\x13EditCommentResponse\x12)\n" +
2738	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"a\n" +
2739	"\x14DeleteCommentRequest\x12\x12\n" +
2740	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2741	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2742	"\n" +
2743	"comment_id\x18\x03 \x01(\tR\tcommentId\"B\n" +
2744	"\x15DeleteCommentResponse\x12)\n" +
2745	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"~\n" +
2746	"\x15ResolveCommentRequest\x12\x12\n" +
2747	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2748	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2749	"\n" +
2750	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x1a\n" +
2751	"\bresolved\x18\x04 \x01(\bR\bresolved\"C\n" +
2752	"\x16ResolveCommentResponse\x12)\n" +
2753	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"F\n" +
2754	"\x18CloseMergeRequestRequest\x12\x12\n" +
2755	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2756	"\x06number\x18\x02 \x01(\x03R\x06number\"V\n" +
2757	"\x19CloseMergeRequestResponse\x129\n" +
2758	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\">\n" +
2759	"\x10MarkReadyRequest\x12\x12\n" +
2760	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2761	"\x06number\x18\x02 \x01(\x03R\x06number\"N\n" +
2762	"\x11MarkReadyResponse\x129\n" +
2763	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xdd\x01\n" +
2764	"\x18MergeMergeRequestRequest\x12\x12\n" +
2765	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2766	"\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
2767	"\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2768	"\ahead_id\x18\x04 \x01(\tR\x06headId\x120\n" +
2769	"\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\x12#\n" +
2770	"\rignore_checks\x18\x06 \x01(\bR\fignoreChecks\"\x8a\x01\n" +
2771	"\x19MergeMergeRequestResponse\x129\n" +
2772	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x122\n" +
2773	"\x15source_branch_deleted\x18\x02 \x01(\bR\x13sourceBranchDeleted\"\x84\x01\n" +
2774	"\x16EnableAutoMergeRequest\x12\x12\n" +
2775	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2776	"\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
2777	"\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2778	"\ahead_id\x18\x04 \x01(\tR\x06headId\"T\n" +
2779	"\x17EnableAutoMergeResponse\x129\n" +
2780	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"D\n" +
2781	"\x16CancelAutoMergeRequest\x12\x12\n" +
2782	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2783	"\x06number\x18\x02 \x01(\x03R\x06number\"T\n" +
2784	"\x17CancelAutoMergeResponse\x129\n" +
2785	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"V\n" +
2786	"\x0fMarkReadRequest\x12\x12\n" +
2787	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2788	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x17\n" +
2789	"\ahead_id\x18\x03 \x01(\tR\x06headId\"\x12\n" +
2790	"\x10MarkReadResponse*\x96\x01\n" +
2791	"\x11MergeRequestState\x12#\n" +
2792	"\x1fMERGE_REQUEST_STATE_UNSPECIFIED\x10\x00\x12\x1c\n" +
2793	"\x18MERGE_REQUEST_STATE_OPEN\x10\x01\x12\x1e\n" +
2794	"\x1aMERGE_REQUEST_STATE_MERGED\x10\x02\x12\x1e\n" +
2795	"\x1aMERGE_REQUEST_STATE_CLOSED\x10\x03*K\n" +
2796	"\bDiffSide\x12\x19\n" +
2797	"\x15DIFF_SIDE_UNSPECIFIED\x10\x00\x12\x11\n" +
2798	"\rDIFF_SIDE_OLD\x10\x01\x12\x11\n" +
2799	"\rDIFF_SIDE_NEW\x10\x02*V\n" +
2800	"\aVerdict\x12\x17\n" +
2801	"\x13VERDICT_UNSPECIFIED\x10\x00\x12\x13\n" +
2802	"\x0fVERDICT_APPROVE\x10\x01\x12\x1d\n" +
2803	"\x19VERDICT_CHANGES_REQUESTED\x10\x02*\xbb\x01\n" +
2804	"\x11MergeabilityState\x12\"\n" +
2805	"\x1eMERGEABILITY_STATE_UNSPECIFIED\x10\x00\x12\x1f\n" +
2806	"\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
2807	"\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
2808	"\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2809	"\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xa9\b\n" +
2810	"\x13MergeRequestService\x12[\n" +
2811	"\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
2812	"\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
2813	"\x0fGetMergeRequest\x12\x1e.ermite.GetMergeRequestRequest\x1a\x1f.ermite.GetMergeRequestResponse\x12C\n" +
2814	"\n" +
2815	"AddComment\x12\x19.ermite.AddCommentRequest\x1a\x1a.ermite.AddCommentResponse\x12F\n" +
2816	"\vEditComment\x12\x1a.ermite.EditCommentRequest\x1a\x1b.ermite.EditCommentResponse\x12L\n" +
2817	"\rDeleteComment\x12\x1c.ermite.DeleteCommentRequest\x1a\x1d.ermite.DeleteCommentResponse\x12O\n" +
2818	"\x0eResolveComment\x12\x1d.ermite.ResolveCommentRequest\x1a\x1e.ermite.ResolveCommentResponse\x12X\n" +
2819	"\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12@\n" +
2820	"\tMarkReady\x12\x18.ermite.MarkReadyRequest\x1a\x19.ermite.MarkReadyResponse\x12X\n" +
2821	"\x11MergeMergeRequest\x12 .ermite.MergeMergeRequestRequest\x1a!.ermite.MergeMergeRequestResponse\x12R\n" +
2822	"\x0fEnableAutoMerge\x12\x1e.ermite.EnableAutoMergeRequest\x1a\x1f.ermite.EnableAutoMergeResponse\x12R\n" +
2823	"\x0fCancelAutoMerge\x12\x1e.ermite.CancelAutoMergeRequest\x1a\x1f.ermite.CancelAutoMergeResponse\x12=\n" +
2824	"\bMarkRead\x12\x17.ermite.MarkReadRequest\x1a\x18.ermite.MarkReadResponseBx\n" +
2825	"\n" +
2826	"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"
2827
2828var (
2829	file_ermite_merge_request_proto_rawDescOnce sync.Once
2830	file_ermite_merge_request_proto_rawDescData []byte
2831)
2832
2833func file_ermite_merge_request_proto_rawDescGZIP() []byte {
2834	file_ermite_merge_request_proto_rawDescOnce.Do(func() {
2835		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)))
2836	})
2837	return file_ermite_merge_request_proto_rawDescData
2838}
2839
2840var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2841var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
2842var file_ermite_merge_request_proto_goTypes = []any{
2843	(MergeRequestState)(0),             // 0: ermite.MergeRequestState
2844	(DiffSide)(0),                      // 1: ermite.DiffSide
2845	(Verdict)(0),                       // 2: ermite.Verdict
2846	(MergeabilityState)(0),             // 3: ermite.MergeabilityState
2847	(*Mergeability)(nil),               // 4: ermite.Mergeability
2848	(*AutoMerge)(nil),                  // 5: ermite.AutoMerge
2849	(*MergeRequest)(nil),               // 6: ermite.MergeRequest
2850	(*Comment)(nil),                    // 7: ermite.Comment
2851	(*AuthorVerdict)(nil),              // 8: ermite.AuthorVerdict
2852	(*CreateMergeRequestRequest)(nil),  // 9: ermite.CreateMergeRequestRequest
2853	(*CreateMergeRequestResponse)(nil), // 10: ermite.CreateMergeRequestResponse
2854	(*ListMergeRequestsRequest)(nil),   // 11: ermite.ListMergeRequestsRequest
2855	(*ListMergeRequestsResponse)(nil),  // 12: ermite.ListMergeRequestsResponse
2856	(*GetMergeRequestRequest)(nil),     // 13: ermite.GetMergeRequestRequest
2857	(*GetMergeRequestResponse)(nil),    // 14: ermite.GetMergeRequestResponse
2858	(*AddCommentRequest)(nil),          // 15: ermite.AddCommentRequest
2859	(*AddCommentResponse)(nil),         // 16: ermite.AddCommentResponse
2860	(*EditCommentRequest)(nil),         // 17: ermite.EditCommentRequest
2861	(*EditCommentResponse)(nil),        // 18: ermite.EditCommentResponse
2862	(*DeleteCommentRequest)(nil),       // 19: ermite.DeleteCommentRequest
2863	(*DeleteCommentResponse)(nil),      // 20: ermite.DeleteCommentResponse
2864	(*ResolveCommentRequest)(nil),      // 21: ermite.ResolveCommentRequest
2865	(*ResolveCommentResponse)(nil),     // 22: ermite.ResolveCommentResponse
2866	(*CloseMergeRequestRequest)(nil),   // 23: ermite.CloseMergeRequestRequest
2867	(*CloseMergeRequestResponse)(nil),  // 24: ermite.CloseMergeRequestResponse
2868	(*MarkReadyRequest)(nil),           // 25: ermite.MarkReadyRequest
2869	(*MarkReadyResponse)(nil),          // 26: ermite.MarkReadyResponse
2870	(*MergeMergeRequestRequest)(nil),   // 27: ermite.MergeMergeRequestRequest
2871	(*MergeMergeRequestResponse)(nil),  // 28: ermite.MergeMergeRequestResponse
2872	(*EnableAutoMergeRequest)(nil),     // 29: ermite.EnableAutoMergeRequest
2873	(*EnableAutoMergeResponse)(nil),    // 30: ermite.EnableAutoMergeResponse
2874	(*CancelAutoMergeRequest)(nil),     // 31: ermite.CancelAutoMergeRequest
2875	(*CancelAutoMergeResponse)(nil),    // 32: ermite.CancelAutoMergeResponse
2876	(*MarkReadRequest)(nil),            // 33: ermite.MarkReadRequest
2877	(*MarkReadResponse)(nil),           // 34: ermite.MarkReadResponse
2878	(*timestamppb.Timestamp)(nil),      // 35: google.protobuf.Timestamp
2879	(MergeMode)(0),                     // 36: ermite.MergeMode
2880	(*Commit)(nil),                     // 37: ermite.Commit
2881	(*DiffStats)(nil),                  // 38: ermite.DiffStats
2882	(*Diff)(nil),                       // 39: ermite.Diff
2883}
2884var file_ermite_merge_request_proto_depIdxs = []int32{
2885	3,  // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
2886	35, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2887	36, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
2888	35, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
2889	0,  // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
2890	35, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2891	35, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2892	36, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
2893	4,  // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
2894	5,  // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
2895	1,  // 10: ermite.Comment.side:type_name -> ermite.DiffSide
2896	35, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
2897	2,  // 12: ermite.Comment.verdict:type_name -> ermite.Verdict
2898	35, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
2899	2,  // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2900	35, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2901	6,  // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2902	0,  // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
2903	6,  // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
2904	6,  // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2905	37, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2906	38, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2907	39, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
2908	7,  // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
2909	8,  // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
2910	1,  // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
2911	2,  // 26: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict
2912	7,  // 27: ermite.AddCommentResponse.comment:type_name -> ermite.Comment
2913	7,  // 28: ermite.EditCommentResponse.comment:type_name -> ermite.Comment
2914	7,  // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
2915	7,  // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
2916	6,  // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2917	6,  // 32: ermite.MarkReadyResponse.merge_request:type_name -> ermite.MergeRequest
2918	36, // 33: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2919	6,  // 34: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2920	36, // 35: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
2921	6,  // 36: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2922	6,  // 37: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2923	9,  // 38: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2924	11, // 39: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2925	13, // 40: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2926	15, // 41: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2927	17, // 42: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2928	19, // 43: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2929	21, // 44: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2930	23, // 45: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2931	25, // 46: ermite.MergeRequestService.MarkReady:input_type -> ermite.MarkReadyRequest
2932	27, // 47: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2933	29, // 48: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
2934	31, // 49: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
2935	33, // 50: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2936	10, // 51: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2937	12, // 52: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2938	14, // 53: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2939	16, // 54: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2940	18, // 55: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2941	20, // 56: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2942	22, // 57: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2943	24, // 58: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2944	26, // 59: ermite.MergeRequestService.MarkReady:output_type -> ermite.MarkReadyResponse
2945	28, // 60: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2946	30, // 61: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
2947	32, // 62: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
2948	34, // 63: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
2949	51, // [51:64] is the sub-list for method output_type
2950	38, // [38:51] is the sub-list for method input_type
2951	38, // [38:38] is the sub-list for extension type_name
2952	38, // [38:38] is the sub-list for extension extendee
2953	0,  // [0:38] is the sub-list for field type_name
2954}
2955
2956func init() { file_ermite_merge_request_proto_init() }
2957func file_ermite_merge_request_proto_init() {
2958	if File_ermite_merge_request_proto != nil {
2959		return
2960	}
2961	file_ermite_git_proto_init()
2962	file_ermite_types_proto_init()
2963	type x struct{}
2964	out := protoimpl.TypeBuilder{
2965		File: protoimpl.DescBuilder{
2966			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2967			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
2968			NumEnums:      4,
2969			NumMessages:   31,
2970			NumExtensions: 0,
2971			NumServices:   1,
2972		},
2973		GoTypes:           file_ermite_merge_request_proto_goTypes,
2974		DependencyIndexes: file_ermite_merge_request_proto_depIdxs,
2975		EnumInfos:         file_ermite_merge_request_proto_enumTypes,
2976		MessageInfos:      file_ermite_merge_request_proto_msgTypes,
2977	}.Build()
2978	File_ermite_merge_request_proto = out.File
2979	file_ermite_merge_request_proto_goTypes = nil
2980	file_ermite_merge_request_proto_depIdxs = nil
2981}

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