v0.14.0 f9976e7

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// MergeMergeRequestRequest describes the merge to perform.
2021type MergeMergeRequestRequest 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	// Mode is how to merge. MERGE_MODE_UNSPECIFIED means fast-forward. The mode
2028	// must be in RepoSettings.allowed_merge_modes of the repository.
2029	Mode MergeMode `protobuf:"varint,3,opt,name=mode,proto3,enum=ermite.MergeMode" json:"mode,omitempty"`
2030	// HeadId is the full id of the commit the caller reviewed, that is the
2031	// MergeRequest.head_id it was shown. Required. The merge happens only if the
2032	// source branch still points to it.
2033	HeadId string `protobuf:"bytes,4,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2034	// DeleteSourceBranch deletes the source branch after the merge. The merge
2035	// is refused before anything changes when the source branch is the default
2036	// branch of the repository or the source or target of another open merge
2037	// request. Servers without the "merge_requests.delete_branch" feature ignore
2038	// it.
2039	DeleteSourceBranch bool `protobuf:"varint,5,opt,name=delete_source_branch,json=deleteSourceBranch,proto3" json:"delete_source_branch,omitempty"`
2040	unknownFields      protoimpl.UnknownFields
2041	sizeCache          protoimpl.SizeCache
2042}
2043
2044func (x *MergeMergeRequestRequest) Reset() {
2045	*x = MergeMergeRequestRequest{}
2046	mi := &file_ermite_merge_request_proto_msgTypes[21]
2047	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048	ms.StoreMessageInfo(mi)
2049}
2050
2051func (x *MergeMergeRequestRequest) String() string {
2052	return protoimpl.X.MessageStringOf(x)
2053}
2054
2055func (*MergeMergeRequestRequest) ProtoMessage() {}
2056
2057func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2058	mi := &file_ermite_merge_request_proto_msgTypes[21]
2059	if x != nil {
2060		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2061		if ms.LoadMessageInfo() == nil {
2062			ms.StoreMessageInfo(mi)
2063		}
2064		return ms
2065	}
2066	return mi.MessageOf(x)
2067}
2068
2069// Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
2070func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
2071	return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2072}
2073
2074func (x *MergeMergeRequestRequest) GetRepo() string {
2075	if x != nil {
2076		return x.Repo
2077	}
2078	return ""
2079}
2080
2081func (x *MergeMergeRequestRequest) GetNumber() int64 {
2082	if x != nil {
2083		return x.Number
2084	}
2085	return 0
2086}
2087
2088func (x *MergeMergeRequestRequest) GetMode() MergeMode {
2089	if x != nil {
2090		return x.Mode
2091	}
2092	return MergeMode_MERGE_MODE_UNSPECIFIED
2093}
2094
2095func (x *MergeMergeRequestRequest) GetHeadId() string {
2096	if x != nil {
2097		return x.HeadId
2098	}
2099	return ""
2100}
2101
2102func (x *MergeMergeRequestRequest) GetDeleteSourceBranch() bool {
2103	if x != nil {
2104		return x.DeleteSourceBranch
2105	}
2106	return false
2107}
2108
2109// MergeMergeRequestResponse holds the merged merge request.
2110type MergeMergeRequestResponse struct {
2111	state protoimpl.MessageState `protogen:"open.v1"`
2112	// MergeRequest is the merge request after the merge: state MERGED,
2113	// merged_commit_id set to the new tip of the target branch and merge_mode
2114	// set to the mode used.
2115	MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2116	// SourceBranchDeleted is true when delete_source_branch was set: the server
2117	// deletes the branch after answering. The deletion is skipped, and the
2118	// branch kept, if the branch moved or another open merge request uses it
2119	// by then; the merge stands either way. Watch reports the deletion with a
2120	// Pushed event for the source branch.
2121	SourceBranchDeleted bool `protobuf:"varint,2,opt,name=source_branch_deleted,json=sourceBranchDeleted,proto3" json:"source_branch_deleted,omitempty"`
2122	unknownFields       protoimpl.UnknownFields
2123	sizeCache           protoimpl.SizeCache
2124}
2125
2126func (x *MergeMergeRequestResponse) Reset() {
2127	*x = MergeMergeRequestResponse{}
2128	mi := &file_ermite_merge_request_proto_msgTypes[22]
2129	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2130	ms.StoreMessageInfo(mi)
2131}
2132
2133func (x *MergeMergeRequestResponse) String() string {
2134	return protoimpl.X.MessageStringOf(x)
2135}
2136
2137func (*MergeMergeRequestResponse) ProtoMessage() {}
2138
2139func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2140	mi := &file_ermite_merge_request_proto_msgTypes[22]
2141	if x != nil {
2142		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2143		if ms.LoadMessageInfo() == nil {
2144			ms.StoreMessageInfo(mi)
2145		}
2146		return ms
2147	}
2148	return mi.MessageOf(x)
2149}
2150
2151// Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
2152func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2153	return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2154}
2155
2156func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
2157	if x != nil {
2158		return x.MergeRequest
2159	}
2160	return nil
2161}
2162
2163func (x *MergeMergeRequestResponse) GetSourceBranchDeleted() bool {
2164	if x != nil {
2165		return x.SourceBranchDeleted
2166	}
2167	return false
2168}
2169
2170// EnableAutoMergeRequest describes the auto-merge to enable.
2171type EnableAutoMergeRequest struct {
2172	state protoimpl.MessageState `protogen:"open.v1"`
2173	// Repo is the repository name.
2174	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2175	// Number is the merge request number.
2176	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2177	// Mode is how to merge. MERGE_MODE_UNSPECIFIED means fast-forward. The mode
2178	// must be in RepoSettings.allowed_merge_modes of the repository.
2179	Mode MergeMode `protobuf:"varint,3,opt,name=mode,proto3,enum=ermite.MergeMode" json:"mode,omitempty"`
2180	// HeadId is the full id of the commit the caller reviewed, that is the
2181	// MergeRequest.head_id it was shown. Required. The auto-merge is enabled
2182	// only if the source branch still points to it; failed_precondition (branch
2183	// moved) otherwise.
2184	HeadId        string `protobuf:"bytes,4,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2185	unknownFields protoimpl.UnknownFields
2186	sizeCache     protoimpl.SizeCache
2187}
2188
2189func (x *EnableAutoMergeRequest) Reset() {
2190	*x = EnableAutoMergeRequest{}
2191	mi := &file_ermite_merge_request_proto_msgTypes[23]
2192	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2193	ms.StoreMessageInfo(mi)
2194}
2195
2196func (x *EnableAutoMergeRequest) String() string {
2197	return protoimpl.X.MessageStringOf(x)
2198}
2199
2200func (*EnableAutoMergeRequest) ProtoMessage() {}
2201
2202func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2203	mi := &file_ermite_merge_request_proto_msgTypes[23]
2204	if x != nil {
2205		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2206		if ms.LoadMessageInfo() == nil {
2207			ms.StoreMessageInfo(mi)
2208		}
2209		return ms
2210	}
2211	return mi.MessageOf(x)
2212}
2213
2214// Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.
2215func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {
2216	return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2217}
2218
2219func (x *EnableAutoMergeRequest) GetRepo() string {
2220	if x != nil {
2221		return x.Repo
2222	}
2223	return ""
2224}
2225
2226func (x *EnableAutoMergeRequest) GetNumber() int64 {
2227	if x != nil {
2228		return x.Number
2229	}
2230	return 0
2231}
2232
2233func (x *EnableAutoMergeRequest) GetMode() MergeMode {
2234	if x != nil {
2235		return x.Mode
2236	}
2237	return MergeMode_MERGE_MODE_UNSPECIFIED
2238}
2239
2240func (x *EnableAutoMergeRequest) GetHeadId() string {
2241	if x != nil {
2242		return x.HeadId
2243	}
2244	return ""
2245}
2246
2247// EnableAutoMergeResponse holds the merge request with auto-merge enabled.
2248type EnableAutoMergeResponse struct {
2249	state protoimpl.MessageState `protogen:"open.v1"`
2250	// MergeRequest is the merge request, with auto_merge set.
2251	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2252	unknownFields protoimpl.UnknownFields
2253	sizeCache     protoimpl.SizeCache
2254}
2255
2256func (x *EnableAutoMergeResponse) Reset() {
2257	*x = EnableAutoMergeResponse{}
2258	mi := &file_ermite_merge_request_proto_msgTypes[24]
2259	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2260	ms.StoreMessageInfo(mi)
2261}
2262
2263func (x *EnableAutoMergeResponse) String() string {
2264	return protoimpl.X.MessageStringOf(x)
2265}
2266
2267func (*EnableAutoMergeResponse) ProtoMessage() {}
2268
2269func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2270	mi := &file_ermite_merge_request_proto_msgTypes[24]
2271	if x != nil {
2272		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2273		if ms.LoadMessageInfo() == nil {
2274			ms.StoreMessageInfo(mi)
2275		}
2276		return ms
2277	}
2278	return mi.MessageOf(x)
2279}
2280
2281// Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.
2282func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {
2283	return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
2284}
2285
2286func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {
2287	if x != nil {
2288		return x.MergeRequest
2289	}
2290	return nil
2291}
2292
2293// CancelAutoMergeRequest names the merge request whose auto-merge to cancel.
2294type CancelAutoMergeRequest struct {
2295	state protoimpl.MessageState `protogen:"open.v1"`
2296	// Repo is the repository name.
2297	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2298	// Number is the merge request number.
2299	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2300	unknownFields protoimpl.UnknownFields
2301	sizeCache     protoimpl.SizeCache
2302}
2303
2304func (x *CancelAutoMergeRequest) Reset() {
2305	*x = CancelAutoMergeRequest{}
2306	mi := &file_ermite_merge_request_proto_msgTypes[25]
2307	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2308	ms.StoreMessageInfo(mi)
2309}
2310
2311func (x *CancelAutoMergeRequest) String() string {
2312	return protoimpl.X.MessageStringOf(x)
2313}
2314
2315func (*CancelAutoMergeRequest) ProtoMessage() {}
2316
2317func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2318	mi := &file_ermite_merge_request_proto_msgTypes[25]
2319	if x != nil {
2320		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2321		if ms.LoadMessageInfo() == nil {
2322			ms.StoreMessageInfo(mi)
2323		}
2324		return ms
2325	}
2326	return mi.MessageOf(x)
2327}
2328
2329// Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.
2330func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {
2331	return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
2332}
2333
2334func (x *CancelAutoMergeRequest) GetRepo() string {
2335	if x != nil {
2336		return x.Repo
2337	}
2338	return ""
2339}
2340
2341func (x *CancelAutoMergeRequest) GetNumber() int64 {
2342	if x != nil {
2343		return x.Number
2344	}
2345	return 0
2346}
2347
2348// CancelAutoMergeResponse holds the merge request after the cancellation.
2349type CancelAutoMergeResponse struct {
2350	state protoimpl.MessageState `protogen:"open.v1"`
2351	// MergeRequest is the merge request, with auto_merge unset.
2352	MergeRequest  *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2353	unknownFields protoimpl.UnknownFields
2354	sizeCache     protoimpl.SizeCache
2355}
2356
2357func (x *CancelAutoMergeResponse) Reset() {
2358	*x = CancelAutoMergeResponse{}
2359	mi := &file_ermite_merge_request_proto_msgTypes[26]
2360	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2361	ms.StoreMessageInfo(mi)
2362}
2363
2364func (x *CancelAutoMergeResponse) String() string {
2365	return protoimpl.X.MessageStringOf(x)
2366}
2367
2368func (*CancelAutoMergeResponse) ProtoMessage() {}
2369
2370func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2371	mi := &file_ermite_merge_request_proto_msgTypes[26]
2372	if x != nil {
2373		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2374		if ms.LoadMessageInfo() == nil {
2375			ms.StoreMessageInfo(mi)
2376		}
2377		return ms
2378	}
2379	return mi.MessageOf(x)
2380}
2381
2382// Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.
2383func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {
2384	return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
2385}
2386
2387func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {
2388	if x != nil {
2389		return x.MergeRequest
2390	}
2391	return nil
2392}
2393
2394// MarkReadRequest records a read position.
2395type MarkReadRequest struct {
2396	state protoimpl.MessageState `protogen:"open.v1"`
2397	// Repo is the repository name.
2398	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2399	// Number is the merge request number.
2400	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2401	// HeadId is the full id of the commit the caller has reviewed, usually the
2402	// MergeRequest.head_id it was shown. Empty means the current head of the
2403	// source branch.
2404	HeadId        string `protobuf:"bytes,3,opt,name=head_id,json=headId,proto3" json:"head_id,omitempty"`
2405	unknownFields protoimpl.UnknownFields
2406	sizeCache     protoimpl.SizeCache
2407}
2408
2409func (x *MarkReadRequest) Reset() {
2410	*x = MarkReadRequest{}
2411	mi := &file_ermite_merge_request_proto_msgTypes[27]
2412	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2413	ms.StoreMessageInfo(mi)
2414}
2415
2416func (x *MarkReadRequest) String() string {
2417	return protoimpl.X.MessageStringOf(x)
2418}
2419
2420func (*MarkReadRequest) ProtoMessage() {}
2421
2422func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2423	mi := &file_ermite_merge_request_proto_msgTypes[27]
2424	if x != nil {
2425		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2426		if ms.LoadMessageInfo() == nil {
2427			ms.StoreMessageInfo(mi)
2428		}
2429		return ms
2430	}
2431	return mi.MessageOf(x)
2432}
2433
2434// Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
2435func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2436	return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
2437}
2438
2439func (x *MarkReadRequest) GetRepo() string {
2440	if x != nil {
2441		return x.Repo
2442	}
2443	return ""
2444}
2445
2446func (x *MarkReadRequest) GetNumber() int64 {
2447	if x != nil {
2448		return x.Number
2449	}
2450	return 0
2451}
2452
2453func (x *MarkReadRequest) GetHeadId() string {
2454	if x != nil {
2455		return x.HeadId
2456	}
2457	return ""
2458}
2459
2460// MarkReadResponse is empty.
2461type MarkReadResponse struct {
2462	state         protoimpl.MessageState `protogen:"open.v1"`
2463	unknownFields protoimpl.UnknownFields
2464	sizeCache     protoimpl.SizeCache
2465}
2466
2467func (x *MarkReadResponse) Reset() {
2468	*x = MarkReadResponse{}
2469	mi := &file_ermite_merge_request_proto_msgTypes[28]
2470	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2471	ms.StoreMessageInfo(mi)
2472}
2473
2474func (x *MarkReadResponse) String() string {
2475	return protoimpl.X.MessageStringOf(x)
2476}
2477
2478func (*MarkReadResponse) ProtoMessage() {}
2479
2480func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2481	mi := &file_ermite_merge_request_proto_msgTypes[28]
2482	if x != nil {
2483		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2484		if ms.LoadMessageInfo() == nil {
2485			ms.StoreMessageInfo(mi)
2486		}
2487		return ms
2488	}
2489	return mi.MessageOf(x)
2490}
2491
2492// Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
2493func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2494	return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
2495}
2496
2497var File_ermite_merge_request_proto protoreflect.FileDescriptor
2498
2499const file_ermite_merge_request_proto_rawDesc = "" +
2500	"\n" +
2501	"\x1aermite/merge_request.proto\x12\x06ermite\x1a\x10ermite/git.proto\x1a\x12ermite/types.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xce\x02\n" +
2502	"\fMergeability\x12/\n" +
2503	"\x05state\x18\x01 \x01(\x0e2\x19.ermite.MergeabilityStateR\x05state\x12\x1b\n" +
2504	"\ttarget_id\x18\x02 \x01(\tR\btargetId\x12\x17\n" +
2505	"\ahead_id\x18\x03 \x01(\tR\x06headId\x12\x16\n" +
2506	"\x06behind\x18\x04 \x01(\x05R\x06behind\x12#\n" +
2507	"\rbehind_capped\x18\x05 \x01(\bR\fbehindCapped\x12%\n" +
2508	"\x0econflict_paths\x18\x06 \x03(\tR\rconflictPaths\x128\n" +
2509	"\x18conflict_paths_truncated\x18\a \x01(\bR\x16conflictPathsTruncated\x129\n" +
2510	"\n" +
2511	"checked_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcheckedAt\"\xa5\x01\n" +
2512	"\tAutoMerge\x12%\n" +
2513	"\x04mode\x18\x01 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2514	"\ahead_id\x18\x02 \x01(\tR\x06headId\x12\x1d\n" +
2515	"\n" +
2516	"enabled_by\x18\x03 \x01(\tR\tenabledBy\x129\n" +
2517	"\n" +
2518	"enabled_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tenabledAt\"\xfd\x04\n" +
2519	"\fMergeRequest\x12\x12\n" +
2520	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2521	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x14\n" +
2522	"\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
2523	"\vdescription\x18\x04 \x01(\tR\vdescription\x12#\n" +
2524	"\rsource_branch\x18\x05 \x01(\tR\fsourceBranch\x12#\n" +
2525	"\rtarget_branch\x18\x06 \x01(\tR\ftargetBranch\x12/\n" +
2526	"\x05state\x18\a \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x16\n" +
2527	"\x06author\x18\b \x01(\tR\x06author\x129\n" +
2528	"\n" +
2529	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2530	"\n" +
2531	"updated_at\x18\n" +
2532	" \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x17\n" +
2533	"\ahead_id\x18\v \x01(\tR\x06headId\x12(\n" +
2534	"\x10merged_commit_id\x18\f \x01(\tR\x0emergedCommitId\x120\n" +
2535	"\n" +
2536	"merge_mode\x18\r \x01(\x0e2\x11.ermite.MergeModeR\tmergeMode\x128\n" +
2537	"\fmergeability\x18\x0e \x01(\v2\x14.ermite.MergeabilityR\fmergeability\x120\n" +
2538	"\n" +
2539	"auto_merge\x18\x0f \x01(\v2\x11.ermite.AutoMergeR\tautoMerge\x12\x1f\n" +
2540	"\vauto_merged\x18\x10 \x01(\bR\n" +
2541	"autoMerged\"\xbf\x03\n" +
2542	"\aComment\x12\x0e\n" +
2543	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
2544	"\x06author\x18\x02 \x01(\tR\x06author\x12\x12\n" +
2545	"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
2546	"\x04line\x18\x04 \x01(\x05R\x04line\x12$\n" +
2547	"\x04side\x18\x05 \x01(\x0e2\x10.ermite.DiffSideR\x04side\x12\x1b\n" +
2548	"\tcommit_id\x18\x06 \x01(\tR\bcommitId\x12\x12\n" +
2549	"\x04text\x18\a \x01(\tR\x04text\x12\x1a\n" +
2550	"\bresolved\x18\b \x01(\bR\bresolved\x129\n" +
2551	"\n" +
2552	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x19\n" +
2553	"\breply_to\x18\n" +
2554	" \x01(\tR\areplyTo\x12\x1d\n" +
2555	"\n" +
2556	"start_line\x18\v \x01(\x05R\tstartLine\x12)\n" +
2557	"\averdict\x18\f \x01(\x0e2\x0f.ermite.VerdictR\averdict\x127\n" +
2558	"\tedited_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\beditedAt\x12\x18\n" +
2559	"\adeleted\x18\x0e \x01(\bR\adeleted\"\xdf\x01\n" +
2560	"\rAuthorVerdict\x12\x16\n" +
2561	"\x06author\x18\x01 \x01(\tR\x06author\x12)\n" +
2562	"\averdict\x18\x02 \x01(\x0e2\x0f.ermite.VerdictR\averdict\x12\x1d\n" +
2563	"\n" +
2564	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x1b\n" +
2565	"\tcommit_id\x18\x04 \x01(\tR\bcommitId\x129\n" +
2566	"\n" +
2567	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x14\n" +
2568	"\x05stale\x18\x06 \x01(\bR\x05stale\"\xb1\x01\n" +
2569	"\x19CreateMergeRequestRequest\x12\x12\n" +
2570	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x14\n" +
2571	"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
2572	"\vdescription\x18\x03 \x01(\tR\vdescription\x12#\n" +
2573	"\rsource_branch\x18\x04 \x01(\tR\fsourceBranch\x12#\n" +
2574	"\rtarget_branch\x18\x05 \x01(\tR\ftargetBranch\"W\n" +
2575	"\x1aCreateMergeRequestResponse\x129\n" +
2576	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\x9b\x01\n" +
2577	"\x18ListMergeRequestsRequest\x12\x12\n" +
2578	"\x04repo\x18\x01 \x01(\tR\x04repo\x12/\n" +
2579	"\x05state\x18\x02 \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x1b\n" +
2580	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" +
2581	"\n" +
2582	"page_token\x18\x04 \x01(\tR\tpageToken\"\x80\x01\n" +
2583	"\x19ListMergeRequestsResponse\x12;\n" +
2584	"\x0emerge_requests\x18\x01 \x03(\v2\x14.ermite.MergeRequestR\rmergeRequests\x12&\n" +
2585	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"l\n" +
2586	"\x16GetMergeRequestRequest\x12\x12\n" +
2587	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2588	"\x06number\x18\x02 \x01(\x03R\x06number\x12&\n" +
2589	"\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xc0\x03\n" +
2590	"\x17GetMergeRequestResponse\x129\n" +
2591	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x12(\n" +
2592	"\acommits\x18\x02 \x03(\v2\x0e.ermite.CommitR\acommits\x12+\n" +
2593	"\x11commits_truncated\x18\x03 \x01(\bR\x10commitsTruncated\x12 \n" +
2594	"\fdiff_base_id\x18\x04 \x01(\tR\n" +
2595	"diffBaseId\x12'\n" +
2596	"\x05stats\x18\x05 \x01(\v2\x11.ermite.DiffStatsR\x05stats\x12 \n" +
2597	"\x04diff\x18\x06 \x01(\v2\f.ermite.DiffR\x04diff\x12+\n" +
2598	"\bcomments\x18\a \x03(\v2\x0f.ermite.CommentR\bcomments\x12 \n" +
2599	"\flast_read_id\x18\b \x01(\tR\n" +
2600	"lastReadId\x12$\n" +
2601	"\x0elast_read_lost\x18\t \x01(\bR\flastReadLost\x121\n" +
2602	"\bverdicts\x18\n" +
2603	" \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\"\x86\x02\n" +
2604	"\x11AddCommentRequest\x12\x12\n" +
2605	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2606	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +
2607	"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
2608	"\x04line\x18\x04 \x01(\x05R\x04line\x12$\n" +
2609	"\x04side\x18\x05 \x01(\x0e2\x10.ermite.DiffSideR\x04side\x12\x12\n" +
2610	"\x04text\x18\x06 \x01(\tR\x04text\x12\x19\n" +
2611	"\breply_to\x18\a \x01(\tR\areplyTo\x12\x1d\n" +
2612	"\n" +
2613	"start_line\x18\b \x01(\x05R\tstartLine\x12)\n" +
2614	"\averdict\x18\t \x01(\x0e2\x0f.ermite.VerdictR\averdict\"?\n" +
2615	"\x12AddCommentResponse\x12)\n" +
2616	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"s\n" +
2617	"\x12EditCommentRequest\x12\x12\n" +
2618	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2619	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2620	"\n" +
2621	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x12\n" +
2622	"\x04text\x18\x04 \x01(\tR\x04text\"@\n" +
2623	"\x13EditCommentResponse\x12)\n" +
2624	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"a\n" +
2625	"\x14DeleteCommentRequest\x12\x12\n" +
2626	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2627	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2628	"\n" +
2629	"comment_id\x18\x03 \x01(\tR\tcommentId\"B\n" +
2630	"\x15DeleteCommentResponse\x12)\n" +
2631	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"~\n" +
2632	"\x15ResolveCommentRequest\x12\x12\n" +
2633	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2634	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x1d\n" +
2635	"\n" +
2636	"comment_id\x18\x03 \x01(\tR\tcommentId\x12\x1a\n" +
2637	"\bresolved\x18\x04 \x01(\bR\bresolved\"C\n" +
2638	"\x16ResolveCommentResponse\x12)\n" +
2639	"\acomment\x18\x01 \x01(\v2\x0f.ermite.CommentR\acomment\"F\n" +
2640	"\x18CloseMergeRequestRequest\x12\x12\n" +
2641	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2642	"\x06number\x18\x02 \x01(\x03R\x06number\"V\n" +
2643	"\x19CloseMergeRequestResponse\x129\n" +
2644	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xb8\x01\n" +
2645	"\x18MergeMergeRequestRequest\x12\x12\n" +
2646	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2647	"\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
2648	"\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2649	"\ahead_id\x18\x04 \x01(\tR\x06headId\x120\n" +
2650	"\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\"\x8a\x01\n" +
2651	"\x19MergeMergeRequestResponse\x129\n" +
2652	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x122\n" +
2653	"\x15source_branch_deleted\x18\x02 \x01(\bR\x13sourceBranchDeleted\"\x84\x01\n" +
2654	"\x16EnableAutoMergeRequest\x12\x12\n" +
2655	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2656	"\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
2657	"\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2658	"\ahead_id\x18\x04 \x01(\tR\x06headId\"T\n" +
2659	"\x17EnableAutoMergeResponse\x129\n" +
2660	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"D\n" +
2661	"\x16CancelAutoMergeRequest\x12\x12\n" +
2662	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2663	"\x06number\x18\x02 \x01(\x03R\x06number\"T\n" +
2664	"\x17CancelAutoMergeResponse\x129\n" +
2665	"\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"V\n" +
2666	"\x0fMarkReadRequest\x12\x12\n" +
2667	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2668	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x17\n" +
2669	"\ahead_id\x18\x03 \x01(\tR\x06headId\"\x12\n" +
2670	"\x10MarkReadResponse*\x96\x01\n" +
2671	"\x11MergeRequestState\x12#\n" +
2672	"\x1fMERGE_REQUEST_STATE_UNSPECIFIED\x10\x00\x12\x1c\n" +
2673	"\x18MERGE_REQUEST_STATE_OPEN\x10\x01\x12\x1e\n" +
2674	"\x1aMERGE_REQUEST_STATE_MERGED\x10\x02\x12\x1e\n" +
2675	"\x1aMERGE_REQUEST_STATE_CLOSED\x10\x03*K\n" +
2676	"\bDiffSide\x12\x19\n" +
2677	"\x15DIFF_SIDE_UNSPECIFIED\x10\x00\x12\x11\n" +
2678	"\rDIFF_SIDE_OLD\x10\x01\x12\x11\n" +
2679	"\rDIFF_SIDE_NEW\x10\x02*V\n" +
2680	"\aVerdict\x12\x17\n" +
2681	"\x13VERDICT_UNSPECIFIED\x10\x00\x12\x13\n" +
2682	"\x0fVERDICT_APPROVE\x10\x01\x12\x1d\n" +
2683	"\x19VERDICT_CHANGES_REQUESTED\x10\x02*\xbb\x01\n" +
2684	"\x11MergeabilityState\x12\"\n" +
2685	"\x1eMERGEABILITY_STATE_UNSPECIFIED\x10\x00\x12\x1f\n" +
2686	"\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
2687	"\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
2688	"\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2689	"\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xe7\a\n" +
2690	"\x13MergeRequestService\x12[\n" +
2691	"\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
2692	"\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
2693	"\x0fGetMergeRequest\x12\x1e.ermite.GetMergeRequestRequest\x1a\x1f.ermite.GetMergeRequestResponse\x12C\n" +
2694	"\n" +
2695	"AddComment\x12\x19.ermite.AddCommentRequest\x1a\x1a.ermite.AddCommentResponse\x12F\n" +
2696	"\vEditComment\x12\x1a.ermite.EditCommentRequest\x1a\x1b.ermite.EditCommentResponse\x12L\n" +
2697	"\rDeleteComment\x12\x1c.ermite.DeleteCommentRequest\x1a\x1d.ermite.DeleteCommentResponse\x12O\n" +
2698	"\x0eResolveComment\x12\x1d.ermite.ResolveCommentRequest\x1a\x1e.ermite.ResolveCommentResponse\x12X\n" +
2699	"\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12X\n" +
2700	"\x11MergeMergeRequest\x12 .ermite.MergeMergeRequestRequest\x1a!.ermite.MergeMergeRequestResponse\x12R\n" +
2701	"\x0fEnableAutoMerge\x12\x1e.ermite.EnableAutoMergeRequest\x1a\x1f.ermite.EnableAutoMergeResponse\x12R\n" +
2702	"\x0fCancelAutoMerge\x12\x1e.ermite.CancelAutoMergeRequest\x1a\x1f.ermite.CancelAutoMergeResponse\x12=\n" +
2703	"\bMarkRead\x12\x17.ermite.MarkReadRequest\x1a\x18.ermite.MarkReadResponseBx\n" +
2704	"\n" +
2705	"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"
2706
2707var (
2708	file_ermite_merge_request_proto_rawDescOnce sync.Once
2709	file_ermite_merge_request_proto_rawDescData []byte
2710)
2711
2712func file_ermite_merge_request_proto_rawDescGZIP() []byte {
2713	file_ermite_merge_request_proto_rawDescOnce.Do(func() {
2714		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)))
2715	})
2716	return file_ermite_merge_request_proto_rawDescData
2717}
2718
2719var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2720var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
2721var file_ermite_merge_request_proto_goTypes = []any{
2722	(MergeRequestState)(0),             // 0: ermite.MergeRequestState
2723	(DiffSide)(0),                      // 1: ermite.DiffSide
2724	(Verdict)(0),                       // 2: ermite.Verdict
2725	(MergeabilityState)(0),             // 3: ermite.MergeabilityState
2726	(*Mergeability)(nil),               // 4: ermite.Mergeability
2727	(*AutoMerge)(nil),                  // 5: ermite.AutoMerge
2728	(*MergeRequest)(nil),               // 6: ermite.MergeRequest
2729	(*Comment)(nil),                    // 7: ermite.Comment
2730	(*AuthorVerdict)(nil),              // 8: ermite.AuthorVerdict
2731	(*CreateMergeRequestRequest)(nil),  // 9: ermite.CreateMergeRequestRequest
2732	(*CreateMergeRequestResponse)(nil), // 10: ermite.CreateMergeRequestResponse
2733	(*ListMergeRequestsRequest)(nil),   // 11: ermite.ListMergeRequestsRequest
2734	(*ListMergeRequestsResponse)(nil),  // 12: ermite.ListMergeRequestsResponse
2735	(*GetMergeRequestRequest)(nil),     // 13: ermite.GetMergeRequestRequest
2736	(*GetMergeRequestResponse)(nil),    // 14: ermite.GetMergeRequestResponse
2737	(*AddCommentRequest)(nil),          // 15: ermite.AddCommentRequest
2738	(*AddCommentResponse)(nil),         // 16: ermite.AddCommentResponse
2739	(*EditCommentRequest)(nil),         // 17: ermite.EditCommentRequest
2740	(*EditCommentResponse)(nil),        // 18: ermite.EditCommentResponse
2741	(*DeleteCommentRequest)(nil),       // 19: ermite.DeleteCommentRequest
2742	(*DeleteCommentResponse)(nil),      // 20: ermite.DeleteCommentResponse
2743	(*ResolveCommentRequest)(nil),      // 21: ermite.ResolveCommentRequest
2744	(*ResolveCommentResponse)(nil),     // 22: ermite.ResolveCommentResponse
2745	(*CloseMergeRequestRequest)(nil),   // 23: ermite.CloseMergeRequestRequest
2746	(*CloseMergeRequestResponse)(nil),  // 24: ermite.CloseMergeRequestResponse
2747	(*MergeMergeRequestRequest)(nil),   // 25: ermite.MergeMergeRequestRequest
2748	(*MergeMergeRequestResponse)(nil),  // 26: ermite.MergeMergeRequestResponse
2749	(*EnableAutoMergeRequest)(nil),     // 27: ermite.EnableAutoMergeRequest
2750	(*EnableAutoMergeResponse)(nil),    // 28: ermite.EnableAutoMergeResponse
2751	(*CancelAutoMergeRequest)(nil),     // 29: ermite.CancelAutoMergeRequest
2752	(*CancelAutoMergeResponse)(nil),    // 30: ermite.CancelAutoMergeResponse
2753	(*MarkReadRequest)(nil),            // 31: ermite.MarkReadRequest
2754	(*MarkReadResponse)(nil),           // 32: ermite.MarkReadResponse
2755	(*timestamppb.Timestamp)(nil),      // 33: google.protobuf.Timestamp
2756	(MergeMode)(0),                     // 34: ermite.MergeMode
2757	(*Commit)(nil),                     // 35: ermite.Commit
2758	(*DiffStats)(nil),                  // 36: ermite.DiffStats
2759	(*Diff)(nil),                       // 37: ermite.Diff
2760}
2761var file_ermite_merge_request_proto_depIdxs = []int32{
2762	3,  // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
2763	33, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2764	34, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
2765	33, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
2766	0,  // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
2767	33, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2768	33, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2769	34, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
2770	4,  // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
2771	5,  // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
2772	1,  // 10: ermite.Comment.side:type_name -> ermite.DiffSide
2773	33, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
2774	2,  // 12: ermite.Comment.verdict:type_name -> ermite.Verdict
2775	33, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
2776	2,  // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2777	33, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2778	6,  // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2779	0,  // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
2780	6,  // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
2781	6,  // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2782	35, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2783	36, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2784	37, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
2785	7,  // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
2786	8,  // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
2787	1,  // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
2788	2,  // 26: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict
2789	7,  // 27: ermite.AddCommentResponse.comment:type_name -> ermite.Comment
2790	7,  // 28: ermite.EditCommentResponse.comment:type_name -> ermite.Comment
2791	7,  // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
2792	7,  // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
2793	6,  // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2794	34, // 32: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2795	6,  // 33: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2796	34, // 34: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
2797	6,  // 35: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2798	6,  // 36: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2799	9,  // 37: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2800	11, // 38: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2801	13, // 39: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2802	15, // 40: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2803	17, // 41: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2804	19, // 42: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2805	21, // 43: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2806	23, // 44: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2807	25, // 45: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2808	27, // 46: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
2809	29, // 47: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
2810	31, // 48: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2811	10, // 49: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2812	12, // 50: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2813	14, // 51: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2814	16, // 52: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2815	18, // 53: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2816	20, // 54: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2817	22, // 55: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2818	24, // 56: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2819	26, // 57: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2820	28, // 58: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
2821	30, // 59: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
2822	32, // 60: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
2823	49, // [49:61] is the sub-list for method output_type
2824	37, // [37:49] is the sub-list for method input_type
2825	37, // [37:37] is the sub-list for extension type_name
2826	37, // [37:37] is the sub-list for extension extendee
2827	0,  // [0:37] is the sub-list for field type_name
2828}
2829
2830func init() { file_ermite_merge_request_proto_init() }
2831func file_ermite_merge_request_proto_init() {
2832	if File_ermite_merge_request_proto != nil {
2833		return
2834	}
2835	file_ermite_git_proto_init()
2836	file_ermite_types_proto_init()
2837	type x struct{}
2838	out := protoimpl.TypeBuilder{
2839		File: protoimpl.DescBuilder{
2840			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2841			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
2842			NumEnums:      4,
2843			NumMessages:   29,
2844			NumExtensions: 0,
2845			NumServices:   1,
2846		},
2847		GoTypes:           file_ermite_merge_request_proto_goTypes,
2848		DependencyIndexes: file_ermite_merge_request_proto_depIdxs,
2849		EnumInfos:         file_ermite_merge_request_proto_enumTypes,
2850		MessageInfos:      file_ermite_merge_request_proto_msgTypes,
2851	}.Build()
2852	File_ermite_merge_request_proto = out.File
2853	file_ermite_merge_request_proto_goTypes = nil
2854	file_ermite_merge_request_proto_depIdxs = nil
2855}

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