v0.14.0 f9976e7

repo.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/repo.proto
8
9package ermite
10
11import (
12	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
13	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
14	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
15	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
16	reflect "reflect"
17	sync "sync"
18	unsafe "unsafe"
19)
20
21const (
22	// Verify that this generated code is sufficiently up-to-date.
23	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
24	// Verify that runtime/protoimpl is sufficiently up-to-date.
25	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
26)
27
28// Visibility says who may read a repository.
29type Visibility int32
30
31const (
32	// Not set. In requests, the server applies its default (private on create,
33	// unchanged on update). Never returned by the server.
34	Visibility_VISIBILITY_UNSPECIFIED Visibility = 0
35	// Anyone, including anonymous callers, may read the repository.
36	Visibility_VISIBILITY_PUBLIC Visibility = 1
37	// Only callers holding the repo:read scope on the repository may read it.
38	// Everyone else gets not_found, never permission_denied.
39	Visibility_VISIBILITY_PRIVATE Visibility = 2
40)
41
42// Enum value maps for Visibility.
43var (
44	Visibility_name = map[int32]string{
45		0: "VISIBILITY_UNSPECIFIED",
46		1: "VISIBILITY_PUBLIC",
47		2: "VISIBILITY_PRIVATE",
48	}
49	Visibility_value = map[string]int32{
50		"VISIBILITY_UNSPECIFIED": 0,
51		"VISIBILITY_PUBLIC":      1,
52		"VISIBILITY_PRIVATE":     2,
53	}
54)
55
56func (x Visibility) Enum() *Visibility {
57	p := new(Visibility)
58	*p = x
59	return p
60}
61
62func (x Visibility) String() string {
63	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
64}
65
66func (Visibility) Descriptor() protoreflect.EnumDescriptor {
67	return file_ermite_repo_proto_enumTypes[0].Descriptor()
68}
69
70func (Visibility) Type() protoreflect.EnumType {
71	return &file_ermite_repo_proto_enumTypes[0]
72}
73
74func (x Visibility) Number() protoreflect.EnumNumber {
75	return protoreflect.EnumNumber(x)
76}
77
78// Deprecated: Use Visibility.Descriptor instead.
79func (Visibility) EnumDescriptor() ([]byte, []int) {
80	return file_ermite_repo_proto_rawDescGZIP(), []int{0}
81}
82
83// IssuesMode says who may write issues in a repository.
84type IssuesMode int32
85
86const (
87	// Not set.
88	IssuesMode_ISSUES_MODE_UNSPECIFIED IssuesMode = 0
89	// Issues are disabled.
90	IssuesMode_ISSUES_MODE_OFF IssuesMode = 1
91	// Only the owner may write issues.
92	IssuesMode_ISSUES_MODE_OWNER IssuesMode = 2
93	// Issues are open to public participation.
94	IssuesMode_ISSUES_MODE_PUBLIC IssuesMode = 3
95)
96
97// Enum value maps for IssuesMode.
98var (
99	IssuesMode_name = map[int32]string{
100		0: "ISSUES_MODE_UNSPECIFIED",
101		1: "ISSUES_MODE_OFF",
102		2: "ISSUES_MODE_OWNER",
103		3: "ISSUES_MODE_PUBLIC",
104	}
105	IssuesMode_value = map[string]int32{
106		"ISSUES_MODE_UNSPECIFIED": 0,
107		"ISSUES_MODE_OFF":         1,
108		"ISSUES_MODE_OWNER":       2,
109		"ISSUES_MODE_PUBLIC":      3,
110	}
111)
112
113func (x IssuesMode) Enum() *IssuesMode {
114	p := new(IssuesMode)
115	*p = x
116	return p
117}
118
119func (x IssuesMode) String() string {
120	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
121}
122
123func (IssuesMode) Descriptor() protoreflect.EnumDescriptor {
124	return file_ermite_repo_proto_enumTypes[1].Descriptor()
125}
126
127func (IssuesMode) Type() protoreflect.EnumType {
128	return &file_ermite_repo_proto_enumTypes[1]
129}
130
131func (x IssuesMode) Number() protoreflect.EnumNumber {
132	return protoreflect.EnumNumber(x)
133}
134
135// Deprecated: Use IssuesMode.Descriptor instead.
136func (IssuesMode) EnumDescriptor() ([]byte, []int) {
137	return file_ermite_repo_proto_rawDescGZIP(), []int{1}
138}
139
140// RepoSettings are the settings of a repository that govern its merge
141// requests and issues.
142type RepoSettings struct {
143	state protoimpl.MessageState `protogen:"open.v1"`
144	// AllowedMergeModes are the modes with which a merge request of the
145	// repository may be merged. It is never empty in a response and has no
146	// duplicate. Every mode is allowed by default. MERGE_MODE_UNSPECIFIED is
147	// rejected.
148	AllowedMergeModes []MergeMode `protobuf:"varint,1,rep,packed,name=allowed_merge_modes,json=allowedMergeModes,proto3,enum=ermite.MergeMode" json:"allowed_merge_modes,omitempty"`
149	// FailingChecksBlock says whether a merge request whose checks fail cannot be
150	// merged. It is true at creation of the repository and always stored
151	// explicitly, so a later change of the server default never alters an
152	// existing repository.
153	FailingChecksBlock bool `protobuf:"varint,2,opt,name=failing_checks_block,json=failingChecksBlock,proto3" json:"failing_checks_block,omitempty"`
154	// Issues is the issue participation mode of the repository.
155	Issues IssuesMode `protobuf:"varint,3,opt,name=issues,proto3,enum=ermite.IssuesMode" json:"issues,omitempty"`
156	// AllowAutoMerge says whether auto-merge can be enabled on the merge requests
157	// of the repository (see MergeRequestService.EnableAutoMerge). It is false by
158	// default. Set only by servers with the "merge_requests.auto_merge" feature.
159	AllowAutoMerge bool `protobuf:"varint,4,opt,name=allow_auto_merge,json=allowAutoMerge,proto3" json:"allow_auto_merge,omitempty"`
160	unknownFields  protoimpl.UnknownFields
161	sizeCache      protoimpl.SizeCache
162}
163
164func (x *RepoSettings) Reset() {
165	*x = RepoSettings{}
166	mi := &file_ermite_repo_proto_msgTypes[0]
167	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
168	ms.StoreMessageInfo(mi)
169}
170
171func (x *RepoSettings) String() string {
172	return protoimpl.X.MessageStringOf(x)
173}
174
175func (*RepoSettings) ProtoMessage() {}
176
177func (x *RepoSettings) ProtoReflect() protoreflect.Message {
178	mi := &file_ermite_repo_proto_msgTypes[0]
179	if x != nil {
180		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
181		if ms.LoadMessageInfo() == nil {
182			ms.StoreMessageInfo(mi)
183		}
184		return ms
185	}
186	return mi.MessageOf(x)
187}
188
189// Deprecated: Use RepoSettings.ProtoReflect.Descriptor instead.
190func (*RepoSettings) Descriptor() ([]byte, []int) {
191	return file_ermite_repo_proto_rawDescGZIP(), []int{0}
192}
193
194func (x *RepoSettings) GetAllowedMergeModes() []MergeMode {
195	if x != nil {
196		return x.AllowedMergeModes
197	}
198	return nil
199}
200
201func (x *RepoSettings) GetFailingChecksBlock() bool {
202	if x != nil {
203		return x.FailingChecksBlock
204	}
205	return false
206}
207
208func (x *RepoSettings) GetIssues() IssuesMode {
209	if x != nil {
210		return x.Issues
211	}
212	return IssuesMode_ISSUES_MODE_UNSPECIFIED
213}
214
215func (x *RepoSettings) GetAllowAutoMerge() bool {
216	if x != nil {
217		return x.AllowAutoMerge
218	}
219	return false
220}
221
222// Repo is the metadata of a repository. Git-owned state (refs, trees, history)
223// is read through GitService.
224type Repo struct {
225	state protoimpl.MessageState `protogen:"open.v1"`
226	// Name is the unique, lowercase repository name: 1-100 characters from
227	// [a-z0-9._-], without a ".git" suffix. It is also the URL path: /<name>.
228	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
229	// Description is a free one-line description. It may be empty.
230	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
231	// Visibility is who may read the repository.
232	Visibility Visibility `protobuf:"varint,3,opt,name=visibility,proto3,enum=ermite.Visibility" json:"visibility,omitempty"`
233	// DefaultBranch is the short name of the branch HEAD points to, for example
234	// "main". It is set even when the branch does not exist yet (empty
235	// repository).
236	DefaultBranch string `protobuf:"bytes,4,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"`
237	// CreatedAt is when the repository was created.
238	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
239	// PushedAt is the time of the last push. It is unset until the first push.
240	PushedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=pushed_at,json=pushedAt,proto3" json:"pushed_at,omitempty"`
241	// Settings are the settings of the repository. Always set in a
242	// response, with the defaults for a repository that never changed them.
243	Settings *RepoSettings `protobuf:"bytes,7,opt,name=settings,proto3" json:"settings,omitempty"`
244	// Topics classify the repository, as on GitHub: at most 20, each 1-50
245	// characters from [a-z0-9-], starting with a letter or a digit, sorted
246	// and without duplicates.
247	Topics        []string `protobuf:"bytes,8,rep,name=topics,proto3" json:"topics,omitempty"`
248	unknownFields protoimpl.UnknownFields
249	sizeCache     protoimpl.SizeCache
250}
251
252func (x *Repo) Reset() {
253	*x = Repo{}
254	mi := &file_ermite_repo_proto_msgTypes[1]
255	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
256	ms.StoreMessageInfo(mi)
257}
258
259func (x *Repo) String() string {
260	return protoimpl.X.MessageStringOf(x)
261}
262
263func (*Repo) ProtoMessage() {}
264
265func (x *Repo) ProtoReflect() protoreflect.Message {
266	mi := &file_ermite_repo_proto_msgTypes[1]
267	if x != nil {
268		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
269		if ms.LoadMessageInfo() == nil {
270			ms.StoreMessageInfo(mi)
271		}
272		return ms
273	}
274	return mi.MessageOf(x)
275}
276
277// Deprecated: Use Repo.ProtoReflect.Descriptor instead.
278func (*Repo) Descriptor() ([]byte, []int) {
279	return file_ermite_repo_proto_rawDescGZIP(), []int{1}
280}
281
282func (x *Repo) GetName() string {
283	if x != nil {
284		return x.Name
285	}
286	return ""
287}
288
289func (x *Repo) GetDescription() string {
290	if x != nil {
291		return x.Description
292	}
293	return ""
294}
295
296func (x *Repo) GetVisibility() Visibility {
297	if x != nil {
298		return x.Visibility
299	}
300	return Visibility_VISIBILITY_UNSPECIFIED
301}
302
303func (x *Repo) GetDefaultBranch() string {
304	if x != nil {
305		return x.DefaultBranch
306	}
307	return ""
308}
309
310func (x *Repo) GetCreatedAt() *timestamppb.Timestamp {
311	if x != nil {
312		return x.CreatedAt
313	}
314	return nil
315}
316
317func (x *Repo) GetPushedAt() *timestamppb.Timestamp {
318	if x != nil {
319		return x.PushedAt
320	}
321	return nil
322}
323
324func (x *Repo) GetSettings() *RepoSettings {
325	if x != nil {
326		return x.Settings
327	}
328	return nil
329}
330
331func (x *Repo) GetTopics() []string {
332	if x != nil {
333		return x.Topics
334	}
335	return nil
336}
337
338// ListReposRequest selects a page of repositories.
339type ListReposRequest struct {
340	state protoimpl.MessageState `protogen:"open.v1"`
341	// PageSize is the maximum number of repositories to return. 0 means the
342	// server default; values above the server maximum are lowered to it.
343	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
344	// PageToken is the next_page_token of a previous response, to get the page
345	// after it. Empty for the first page.
346	PageToken     string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
347	unknownFields protoimpl.UnknownFields
348	sizeCache     protoimpl.SizeCache
349}
350
351func (x *ListReposRequest) Reset() {
352	*x = ListReposRequest{}
353	mi := &file_ermite_repo_proto_msgTypes[2]
354	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
355	ms.StoreMessageInfo(mi)
356}
357
358func (x *ListReposRequest) String() string {
359	return protoimpl.X.MessageStringOf(x)
360}
361
362func (*ListReposRequest) ProtoMessage() {}
363
364func (x *ListReposRequest) ProtoReflect() protoreflect.Message {
365	mi := &file_ermite_repo_proto_msgTypes[2]
366	if x != nil {
367		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
368		if ms.LoadMessageInfo() == nil {
369			ms.StoreMessageInfo(mi)
370		}
371		return ms
372	}
373	return mi.MessageOf(x)
374}
375
376// Deprecated: Use ListReposRequest.ProtoReflect.Descriptor instead.
377func (*ListReposRequest) Descriptor() ([]byte, []int) {
378	return file_ermite_repo_proto_rawDescGZIP(), []int{2}
379}
380
381func (x *ListReposRequest) GetPageSize() int32 {
382	if x != nil {
383		return x.PageSize
384	}
385	return 0
386}
387
388func (x *ListReposRequest) GetPageToken() string {
389	if x != nil {
390		return x.PageToken
391	}
392	return ""
393}
394
395// ListReposResponse is one page of repositories.
396type ListReposResponse struct {
397	state protoimpl.MessageState `protogen:"open.v1"`
398	// Repos are the repositories of this page, ordered by name.
399	Repos []*Repo `protobuf:"bytes,1,rep,name=repos,proto3" json:"repos,omitempty"`
400	// NextPageToken is passed as page_token to get the next page. Empty when
401	// there is no next page.
402	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
403	unknownFields protoimpl.UnknownFields
404	sizeCache     protoimpl.SizeCache
405}
406
407func (x *ListReposResponse) Reset() {
408	*x = ListReposResponse{}
409	mi := &file_ermite_repo_proto_msgTypes[3]
410	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
411	ms.StoreMessageInfo(mi)
412}
413
414func (x *ListReposResponse) String() string {
415	return protoimpl.X.MessageStringOf(x)
416}
417
418func (*ListReposResponse) ProtoMessage() {}
419
420func (x *ListReposResponse) ProtoReflect() protoreflect.Message {
421	mi := &file_ermite_repo_proto_msgTypes[3]
422	if x != nil {
423		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
424		if ms.LoadMessageInfo() == nil {
425			ms.StoreMessageInfo(mi)
426		}
427		return ms
428	}
429	return mi.MessageOf(x)
430}
431
432// Deprecated: Use ListReposResponse.ProtoReflect.Descriptor instead.
433func (*ListReposResponse) Descriptor() ([]byte, []int) {
434	return file_ermite_repo_proto_rawDescGZIP(), []int{3}
435}
436
437func (x *ListReposResponse) GetRepos() []*Repo {
438	if x != nil {
439		return x.Repos
440	}
441	return nil
442}
443
444func (x *ListReposResponse) GetNextPageToken() string {
445	if x != nil {
446		return x.NextPageToken
447	}
448	return ""
449}
450
451// GetRepoRequest names the repository to read.
452type GetRepoRequest struct {
453	state protoimpl.MessageState `protogen:"open.v1"`
454	// Repo is the repository name.
455	Repo          string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
456	unknownFields protoimpl.UnknownFields
457	sizeCache     protoimpl.SizeCache
458}
459
460func (x *GetRepoRequest) Reset() {
461	*x = GetRepoRequest{}
462	mi := &file_ermite_repo_proto_msgTypes[4]
463	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
464	ms.StoreMessageInfo(mi)
465}
466
467func (x *GetRepoRequest) String() string {
468	return protoimpl.X.MessageStringOf(x)
469}
470
471func (*GetRepoRequest) ProtoMessage() {}
472
473func (x *GetRepoRequest) ProtoReflect() protoreflect.Message {
474	mi := &file_ermite_repo_proto_msgTypes[4]
475	if x != nil {
476		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
477		if ms.LoadMessageInfo() == nil {
478			ms.StoreMessageInfo(mi)
479		}
480		return ms
481	}
482	return mi.MessageOf(x)
483}
484
485// Deprecated: Use GetRepoRequest.ProtoReflect.Descriptor instead.
486func (*GetRepoRequest) Descriptor() ([]byte, []int) {
487	return file_ermite_repo_proto_rawDescGZIP(), []int{4}
488}
489
490func (x *GetRepoRequest) GetRepo() string {
491	if x != nil {
492		return x.Repo
493	}
494	return ""
495}
496
497// GetRepoResponse holds the repository.
498type GetRepoResponse struct {
499	state protoimpl.MessageState `protogen:"open.v1"`
500	// Repo is the repository metadata.
501	Repo          *Repo `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
502	unknownFields protoimpl.UnknownFields
503	sizeCache     protoimpl.SizeCache
504}
505
506func (x *GetRepoResponse) Reset() {
507	*x = GetRepoResponse{}
508	mi := &file_ermite_repo_proto_msgTypes[5]
509	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
510	ms.StoreMessageInfo(mi)
511}
512
513func (x *GetRepoResponse) String() string {
514	return protoimpl.X.MessageStringOf(x)
515}
516
517func (*GetRepoResponse) ProtoMessage() {}
518
519func (x *GetRepoResponse) ProtoReflect() protoreflect.Message {
520	mi := &file_ermite_repo_proto_msgTypes[5]
521	if x != nil {
522		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
523		if ms.LoadMessageInfo() == nil {
524			ms.StoreMessageInfo(mi)
525		}
526		return ms
527	}
528	return mi.MessageOf(x)
529}
530
531// Deprecated: Use GetRepoResponse.ProtoReflect.Descriptor instead.
532func (*GetRepoResponse) Descriptor() ([]byte, []int) {
533	return file_ermite_repo_proto_rawDescGZIP(), []int{5}
534}
535
536func (x *GetRepoResponse) GetRepo() *Repo {
537	if x != nil {
538		return x.Repo
539	}
540	return nil
541}
542
543// CreateRepoRequest describes the repository to create.
544type CreateRepoRequest struct {
545	state protoimpl.MessageState `protogen:"open.v1"`
546	// Name is the name of the new repository. Names are lowercase; an uppercase
547	// name is rejected with invalid_argument.
548	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
549	// Description is an optional one-line description.
550	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
551	// Visibility of the new repository. VISIBILITY_UNSPECIFIED means private.
552	Visibility Visibility `protobuf:"varint,3,opt,name=visibility,proto3,enum=ermite.Visibility" json:"visibility,omitempty"`
553	// Topics are the optional topics of the new repository (see Repo.topics);
554	// they are lowercased, sorted and deduplicated.
555	Topics        []string `protobuf:"bytes,4,rep,name=topics,proto3" json:"topics,omitempty"`
556	unknownFields protoimpl.UnknownFields
557	sizeCache     protoimpl.SizeCache
558}
559
560func (x *CreateRepoRequest) Reset() {
561	*x = CreateRepoRequest{}
562	mi := &file_ermite_repo_proto_msgTypes[6]
563	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
564	ms.StoreMessageInfo(mi)
565}
566
567func (x *CreateRepoRequest) String() string {
568	return protoimpl.X.MessageStringOf(x)
569}
570
571func (*CreateRepoRequest) ProtoMessage() {}
572
573func (x *CreateRepoRequest) ProtoReflect() protoreflect.Message {
574	mi := &file_ermite_repo_proto_msgTypes[6]
575	if x != nil {
576		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
577		if ms.LoadMessageInfo() == nil {
578			ms.StoreMessageInfo(mi)
579		}
580		return ms
581	}
582	return mi.MessageOf(x)
583}
584
585// Deprecated: Use CreateRepoRequest.ProtoReflect.Descriptor instead.
586func (*CreateRepoRequest) Descriptor() ([]byte, []int) {
587	return file_ermite_repo_proto_rawDescGZIP(), []int{6}
588}
589
590func (x *CreateRepoRequest) GetName() string {
591	if x != nil {
592		return x.Name
593	}
594	return ""
595}
596
597func (x *CreateRepoRequest) GetDescription() string {
598	if x != nil {
599		return x.Description
600	}
601	return ""
602}
603
604func (x *CreateRepoRequest) GetVisibility() Visibility {
605	if x != nil {
606		return x.Visibility
607	}
608	return Visibility_VISIBILITY_UNSPECIFIED
609}
610
611func (x *CreateRepoRequest) GetTopics() []string {
612	if x != nil {
613		return x.Topics
614	}
615	return nil
616}
617
618// CreateRepoResponse holds the new repository.
619type CreateRepoResponse struct {
620	state protoimpl.MessageState `protogen:"open.v1"`
621	// Repo is the created repository.
622	Repo          *Repo `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
623	unknownFields protoimpl.UnknownFields
624	sizeCache     protoimpl.SizeCache
625}
626
627func (x *CreateRepoResponse) Reset() {
628	*x = CreateRepoResponse{}
629	mi := &file_ermite_repo_proto_msgTypes[7]
630	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
631	ms.StoreMessageInfo(mi)
632}
633
634func (x *CreateRepoResponse) String() string {
635	return protoimpl.X.MessageStringOf(x)
636}
637
638func (*CreateRepoResponse) ProtoMessage() {}
639
640func (x *CreateRepoResponse) ProtoReflect() protoreflect.Message {
641	mi := &file_ermite_repo_proto_msgTypes[7]
642	if x != nil {
643		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
644		if ms.LoadMessageInfo() == nil {
645			ms.StoreMessageInfo(mi)
646		}
647		return ms
648	}
649	return mi.MessageOf(x)
650}
651
652// Deprecated: Use CreateRepoResponse.ProtoReflect.Descriptor instead.
653func (*CreateRepoResponse) Descriptor() ([]byte, []int) {
654	return file_ermite_repo_proto_rawDescGZIP(), []int{7}
655}
656
657func (x *CreateRepoResponse) GetRepo() *Repo {
658	if x != nil {
659		return x.Repo
660	}
661	return nil
662}
663
664// UpdateRepoRequest changes some fields of a repository.
665type UpdateRepoRequest struct {
666	state protoimpl.MessageState `protogen:"open.v1"`
667	// Repo is the name of the repository to change. Repositories cannot be
668	// renamed.
669	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
670	// Description is the new description. Used only if update_mask contains
671	// "description"; an empty value then clears it.
672	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
673	// Visibility is the new visibility. Used only if update_mask contains
674	// "visibility"; it must not be VISIBILITY_UNSPECIFIED then.
675	Visibility Visibility `protobuf:"varint,3,opt,name=visibility,proto3,enum=ermite.Visibility" json:"visibility,omitempty"`
676	// DefaultBranch is the short name of the new default branch. Used only if
677	// update_mask contains "default_branch". The branch must exist, otherwise
678	// the call fails with failed_precondition.
679	DefaultBranch string `protobuf:"bytes,4,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"`
680	// UpdateMask lists the fields to change: "description", "visibility",
681	// "default_branch", "topics", "settings.allowed_merge_modes",
682	// "settings.failing_checks_block" and/or "settings.allow_auto_merge".
683	// "settings" stands for the three merge settings paths. It must not be empty unless issues is set. Other paths are
684	// invalid_argument, including "settings.issues" and "issues": the issues
685	// field is applied outside the mask.
686	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
687	// Settings holds the new merge settings. Only the fields named in
688	// update_mask are used. allowed_merge_modes must then not be empty nor
689	// contain MERGE_MODE_UNSPECIFIED, otherwise the call fails with
690	// invalid_argument. Changing settings needs the repo:admin scope, like any
691	// other field.
692	Settings *RepoSettings `protobuf:"bytes,6,opt,name=settings,proto3" json:"settings,omitempty"`
693	// Topics replace the topics of the repository (see Repo.topics). Used only
694	// if update_mask contains "topics"; an empty list then clears them.
695	Topics []string `protobuf:"bytes,7,rep,name=topics,proto3" json:"topics,omitempty"`
696	// Issues is the new issue participation mode. When absent it is unchanged.
697	// It is applied whatever update_mask contains, and may be the only change
698	// (an empty update_mask is then valid). When present it must not be
699	// ISSUES_MODE_UNSPECIFIED: that is invalid_argument. Changing it needs the
700	// repo:admin scope and a token with no branch limit, like any other field.
701	Issues        *IssuesMode `protobuf:"varint,8,opt,name=issues,proto3,enum=ermite.IssuesMode,oneof" json:"issues,omitempty"`
702	unknownFields protoimpl.UnknownFields
703	sizeCache     protoimpl.SizeCache
704}
705
706func (x *UpdateRepoRequest) Reset() {
707	*x = UpdateRepoRequest{}
708	mi := &file_ermite_repo_proto_msgTypes[8]
709	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
710	ms.StoreMessageInfo(mi)
711}
712
713func (x *UpdateRepoRequest) String() string {
714	return protoimpl.X.MessageStringOf(x)
715}
716
717func (*UpdateRepoRequest) ProtoMessage() {}
718
719func (x *UpdateRepoRequest) ProtoReflect() protoreflect.Message {
720	mi := &file_ermite_repo_proto_msgTypes[8]
721	if x != nil {
722		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
723		if ms.LoadMessageInfo() == nil {
724			ms.StoreMessageInfo(mi)
725		}
726		return ms
727	}
728	return mi.MessageOf(x)
729}
730
731// Deprecated: Use UpdateRepoRequest.ProtoReflect.Descriptor instead.
732func (*UpdateRepoRequest) Descriptor() ([]byte, []int) {
733	return file_ermite_repo_proto_rawDescGZIP(), []int{8}
734}
735
736func (x *UpdateRepoRequest) GetRepo() string {
737	if x != nil {
738		return x.Repo
739	}
740	return ""
741}
742
743func (x *UpdateRepoRequest) GetDescription() string {
744	if x != nil {
745		return x.Description
746	}
747	return ""
748}
749
750func (x *UpdateRepoRequest) GetVisibility() Visibility {
751	if x != nil {
752		return x.Visibility
753	}
754	return Visibility_VISIBILITY_UNSPECIFIED
755}
756
757func (x *UpdateRepoRequest) GetDefaultBranch() string {
758	if x != nil {
759		return x.DefaultBranch
760	}
761	return ""
762}
763
764func (x *UpdateRepoRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
765	if x != nil {
766		return x.UpdateMask
767	}
768	return nil
769}
770
771func (x *UpdateRepoRequest) GetSettings() *RepoSettings {
772	if x != nil {
773		return x.Settings
774	}
775	return nil
776}
777
778func (x *UpdateRepoRequest) GetTopics() []string {
779	if x != nil {
780		return x.Topics
781	}
782	return nil
783}
784
785func (x *UpdateRepoRequest) GetIssues() IssuesMode {
786	if x != nil && x.Issues != nil {
787		return *x.Issues
788	}
789	return IssuesMode_ISSUES_MODE_UNSPECIFIED
790}
791
792// UpdateRepoResponse holds the repository after the update.
793type UpdateRepoResponse struct {
794	state protoimpl.MessageState `protogen:"open.v1"`
795	// Repo is the updated repository.
796	Repo          *Repo `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
797	unknownFields protoimpl.UnknownFields
798	sizeCache     protoimpl.SizeCache
799}
800
801func (x *UpdateRepoResponse) Reset() {
802	*x = UpdateRepoResponse{}
803	mi := &file_ermite_repo_proto_msgTypes[9]
804	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
805	ms.StoreMessageInfo(mi)
806}
807
808func (x *UpdateRepoResponse) String() string {
809	return protoimpl.X.MessageStringOf(x)
810}
811
812func (*UpdateRepoResponse) ProtoMessage() {}
813
814func (x *UpdateRepoResponse) ProtoReflect() protoreflect.Message {
815	mi := &file_ermite_repo_proto_msgTypes[9]
816	if x != nil {
817		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
818		if ms.LoadMessageInfo() == nil {
819			ms.StoreMessageInfo(mi)
820		}
821		return ms
822	}
823	return mi.MessageOf(x)
824}
825
826// Deprecated: Use UpdateRepoResponse.ProtoReflect.Descriptor instead.
827func (*UpdateRepoResponse) Descriptor() ([]byte, []int) {
828	return file_ermite_repo_proto_rawDescGZIP(), []int{9}
829}
830
831func (x *UpdateRepoResponse) GetRepo() *Repo {
832	if x != nil {
833		return x.Repo
834	}
835	return nil
836}
837
838// DeleteRepoRequest names the repository to delete.
839type DeleteRepoRequest struct {
840	state protoimpl.MessageState `protogen:"open.v1"`
841	// Repo is the repository name.
842	Repo          string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
843	unknownFields protoimpl.UnknownFields
844	sizeCache     protoimpl.SizeCache
845}
846
847func (x *DeleteRepoRequest) Reset() {
848	*x = DeleteRepoRequest{}
849	mi := &file_ermite_repo_proto_msgTypes[10]
850	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
851	ms.StoreMessageInfo(mi)
852}
853
854func (x *DeleteRepoRequest) String() string {
855	return protoimpl.X.MessageStringOf(x)
856}
857
858func (*DeleteRepoRequest) ProtoMessage() {}
859
860func (x *DeleteRepoRequest) ProtoReflect() protoreflect.Message {
861	mi := &file_ermite_repo_proto_msgTypes[10]
862	if x != nil {
863		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
864		if ms.LoadMessageInfo() == nil {
865			ms.StoreMessageInfo(mi)
866		}
867		return ms
868	}
869	return mi.MessageOf(x)
870}
871
872// Deprecated: Use DeleteRepoRequest.ProtoReflect.Descriptor instead.
873func (*DeleteRepoRequest) Descriptor() ([]byte, []int) {
874	return file_ermite_repo_proto_rawDescGZIP(), []int{10}
875}
876
877func (x *DeleteRepoRequest) GetRepo() string {
878	if x != nil {
879		return x.Repo
880	}
881	return ""
882}
883
884// DeleteRepoResponse is empty.
885type DeleteRepoResponse struct {
886	state         protoimpl.MessageState `protogen:"open.v1"`
887	unknownFields protoimpl.UnknownFields
888	sizeCache     protoimpl.SizeCache
889}
890
891func (x *DeleteRepoResponse) Reset() {
892	*x = DeleteRepoResponse{}
893	mi := &file_ermite_repo_proto_msgTypes[11]
894	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
895	ms.StoreMessageInfo(mi)
896}
897
898func (x *DeleteRepoResponse) String() string {
899	return protoimpl.X.MessageStringOf(x)
900}
901
902func (*DeleteRepoResponse) ProtoMessage() {}
903
904func (x *DeleteRepoResponse) ProtoReflect() protoreflect.Message {
905	mi := &file_ermite_repo_proto_msgTypes[11]
906	if x != nil {
907		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
908		if ms.LoadMessageInfo() == nil {
909			ms.StoreMessageInfo(mi)
910		}
911		return ms
912	}
913	return mi.MessageOf(x)
914}
915
916// Deprecated: Use DeleteRepoResponse.ProtoReflect.Descriptor instead.
917func (*DeleteRepoResponse) Descriptor() ([]byte, []int) {
918	return file_ermite_repo_proto_rawDescGZIP(), []int{11}
919}
920
921var File_ermite_repo_proto protoreflect.FileDescriptor
922
923const file_ermite_repo_proto_rawDesc = "" +
924	"\n" +
925	"\x11ermite/repo.proto\x12\x06ermite\x1a google/protobuf/field_mask.proto\x1a\x12ermite/types.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd9\x01\n" +
926	"\fRepoSettings\x12A\n" +
927	"\x13allowed_merge_modes\x18\x01 \x03(\x0e2\x11.ermite.MergeModeR\x11allowedMergeModes\x120\n" +
928	"\x14failing_checks_block\x18\x02 \x01(\bR\x12failingChecksBlock\x12*\n" +
929	"\x06issues\x18\x03 \x01(\x0e2\x12.ermite.IssuesModeR\x06issues\x12(\n" +
930	"\x10allow_auto_merge\x18\x04 \x01(\bR\x0eallowAutoMerge\"\xd5\x02\n" +
931	"\x04Repo\x12\x12\n" +
932	"\x04name\x18\x01 \x01(\tR\x04name\x12 \n" +
933	"\vdescription\x18\x02 \x01(\tR\vdescription\x122\n" +
934	"\n" +
935	"visibility\x18\x03 \x01(\x0e2\x12.ermite.VisibilityR\n" +
936	"visibility\x12%\n" +
937	"\x0edefault_branch\x18\x04 \x01(\tR\rdefaultBranch\x129\n" +
938	"\n" +
939	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x127\n" +
940	"\tpushed_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\bpushedAt\x120\n" +
941	"\bsettings\x18\a \x01(\v2\x14.ermite.RepoSettingsR\bsettings\x12\x16\n" +
942	"\x06topics\x18\b \x03(\tR\x06topics\"N\n" +
943	"\x10ListReposRequest\x12\x1b\n" +
944	"\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
945	"\n" +
946	"page_token\x18\x02 \x01(\tR\tpageToken\"_\n" +
947	"\x11ListReposResponse\x12\"\n" +
948	"\x05repos\x18\x01 \x03(\v2\f.ermite.RepoR\x05repos\x12&\n" +
949	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"$\n" +
950	"\x0eGetRepoRequest\x12\x12\n" +
951	"\x04repo\x18\x01 \x01(\tR\x04repo\"3\n" +
952	"\x0fGetRepoResponse\x12 \n" +
953	"\x04repo\x18\x01 \x01(\v2\f.ermite.RepoR\x04repo\"\x95\x01\n" +
954	"\x11CreateRepoRequest\x12\x12\n" +
955	"\x04name\x18\x01 \x01(\tR\x04name\x12 \n" +
956	"\vdescription\x18\x02 \x01(\tR\vdescription\x122\n" +
957	"\n" +
958	"visibility\x18\x03 \x01(\x0e2\x12.ermite.VisibilityR\n" +
959	"visibility\x12\x16\n" +
960	"\x06topics\x18\x04 \x03(\tR\x06topics\"6\n" +
961	"\x12CreateRepoResponse\x12 \n" +
962	"\x04repo\x18\x01 \x01(\v2\f.ermite.RepoR\x04repo\"\xe7\x02\n" +
963	"\x11UpdateRepoRequest\x12\x12\n" +
964	"\x04repo\x18\x01 \x01(\tR\x04repo\x12 \n" +
965	"\vdescription\x18\x02 \x01(\tR\vdescription\x122\n" +
966	"\n" +
967	"visibility\x18\x03 \x01(\x0e2\x12.ermite.VisibilityR\n" +
968	"visibility\x12%\n" +
969	"\x0edefault_branch\x18\x04 \x01(\tR\rdefaultBranch\x12;\n" +
970	"\vupdate_mask\x18\x05 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" +
971	"updateMask\x120\n" +
972	"\bsettings\x18\x06 \x01(\v2\x14.ermite.RepoSettingsR\bsettings\x12\x16\n" +
973	"\x06topics\x18\a \x03(\tR\x06topics\x12/\n" +
974	"\x06issues\x18\b \x01(\x0e2\x12.ermite.IssuesModeH\x00R\x06issues\x88\x01\x01B\t\n" +
975	"\a_issues\"6\n" +
976	"\x12UpdateRepoResponse\x12 \n" +
977	"\x04repo\x18\x01 \x01(\v2\f.ermite.RepoR\x04repo\"'\n" +
978	"\x11DeleteRepoRequest\x12\x12\n" +
979	"\x04repo\x18\x01 \x01(\tR\x04repo\"\x14\n" +
980	"\x12DeleteRepoResponse*W\n" +
981	"\n" +
982	"Visibility\x12\x1a\n" +
983	"\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x15\n" +
984	"\x11VISIBILITY_PUBLIC\x10\x01\x12\x16\n" +
985	"\x12VISIBILITY_PRIVATE\x10\x02*m\n" +
986	"\n" +
987	"IssuesMode\x12\x1b\n" +
988	"\x17ISSUES_MODE_UNSPECIFIED\x10\x00\x12\x13\n" +
989	"\x0fISSUES_MODE_OFF\x10\x01\x12\x15\n" +
990	"\x11ISSUES_MODE_OWNER\x10\x02\x12\x16\n" +
991	"\x12ISSUES_MODE_PUBLIC\x10\x032\xda\x02\n" +
992	"\vRepoService\x12@\n" +
993	"\tListRepos\x12\x18.ermite.ListReposRequest\x1a\x19.ermite.ListReposResponse\x12:\n" +
994	"\aGetRepo\x12\x16.ermite.GetRepoRequest\x1a\x17.ermite.GetRepoResponse\x12C\n" +
995	"\n" +
996	"CreateRepo\x12\x19.ermite.CreateRepoRequest\x1a\x1a.ermite.CreateRepoResponse\x12C\n" +
997	"\n" +
998	"UpdateRepo\x12\x19.ermite.UpdateRepoRequest\x1a\x1a.ermite.UpdateRepoResponse\x12C\n" +
999	"\n" +
1000	"DeleteRepo\x12\x19.ermite.DeleteRepoRequest\x1a\x1a.ermite.DeleteRepoResponseBp\n" +
1001	"\n" +
1002	"com.ermiteB\tRepoProtoP\x01Z\x1fbnema.dev/ermite-api/gen/ermite\xa2\x02\x03EXX\xaa\x02\x06Ermite\xca\x02\x06Ermite\xe2\x02\x12Ermite\\GPBMetadata\xea\x02\x06Ermiteb\x06proto3"
1003
1004var (
1005	file_ermite_repo_proto_rawDescOnce sync.Once
1006	file_ermite_repo_proto_rawDescData []byte
1007)
1008
1009func file_ermite_repo_proto_rawDescGZIP() []byte {
1010	file_ermite_repo_proto_rawDescOnce.Do(func() {
1011		file_ermite_repo_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_repo_proto_rawDesc), len(file_ermite_repo_proto_rawDesc)))
1012	})
1013	return file_ermite_repo_proto_rawDescData
1014}
1015
1016var file_ermite_repo_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
1017var file_ermite_repo_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
1018var file_ermite_repo_proto_goTypes = []any{
1019	(Visibility)(0),               // 0: ermite.Visibility
1020	(IssuesMode)(0),               // 1: ermite.IssuesMode
1021	(*RepoSettings)(nil),          // 2: ermite.RepoSettings
1022	(*Repo)(nil),                  // 3: ermite.Repo
1023	(*ListReposRequest)(nil),      // 4: ermite.ListReposRequest
1024	(*ListReposResponse)(nil),     // 5: ermite.ListReposResponse
1025	(*GetRepoRequest)(nil),        // 6: ermite.GetRepoRequest
1026	(*GetRepoResponse)(nil),       // 7: ermite.GetRepoResponse
1027	(*CreateRepoRequest)(nil),     // 8: ermite.CreateRepoRequest
1028	(*CreateRepoResponse)(nil),    // 9: ermite.CreateRepoResponse
1029	(*UpdateRepoRequest)(nil),     // 10: ermite.UpdateRepoRequest
1030	(*UpdateRepoResponse)(nil),    // 11: ermite.UpdateRepoResponse
1031	(*DeleteRepoRequest)(nil),     // 12: ermite.DeleteRepoRequest
1032	(*DeleteRepoResponse)(nil),    // 13: ermite.DeleteRepoResponse
1033	(MergeMode)(0),                // 14: ermite.MergeMode
1034	(*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp
1035	(*fieldmaskpb.FieldMask)(nil), // 16: google.protobuf.FieldMask
1036}
1037var file_ermite_repo_proto_depIdxs = []int32{
1038	14, // 0: ermite.RepoSettings.allowed_merge_modes:type_name -> ermite.MergeMode
1039	1,  // 1: ermite.RepoSettings.issues:type_name -> ermite.IssuesMode
1040	0,  // 2: ermite.Repo.visibility:type_name -> ermite.Visibility
1041	15, // 3: ermite.Repo.created_at:type_name -> google.protobuf.Timestamp
1042	15, // 4: ermite.Repo.pushed_at:type_name -> google.protobuf.Timestamp
1043	2,  // 5: ermite.Repo.settings:type_name -> ermite.RepoSettings
1044	3,  // 6: ermite.ListReposResponse.repos:type_name -> ermite.Repo
1045	3,  // 7: ermite.GetRepoResponse.repo:type_name -> ermite.Repo
1046	0,  // 8: ermite.CreateRepoRequest.visibility:type_name -> ermite.Visibility
1047	3,  // 9: ermite.CreateRepoResponse.repo:type_name -> ermite.Repo
1048	0,  // 10: ermite.UpdateRepoRequest.visibility:type_name -> ermite.Visibility
1049	16, // 11: ermite.UpdateRepoRequest.update_mask:type_name -> google.protobuf.FieldMask
1050	2,  // 12: ermite.UpdateRepoRequest.settings:type_name -> ermite.RepoSettings
1051	1,  // 13: ermite.UpdateRepoRequest.issues:type_name -> ermite.IssuesMode
1052	3,  // 14: ermite.UpdateRepoResponse.repo:type_name -> ermite.Repo
1053	4,  // 15: ermite.RepoService.ListRepos:input_type -> ermite.ListReposRequest
1054	6,  // 16: ermite.RepoService.GetRepo:input_type -> ermite.GetRepoRequest
1055	8,  // 17: ermite.RepoService.CreateRepo:input_type -> ermite.CreateRepoRequest
1056	10, // 18: ermite.RepoService.UpdateRepo:input_type -> ermite.UpdateRepoRequest
1057	12, // 19: ermite.RepoService.DeleteRepo:input_type -> ermite.DeleteRepoRequest
1058	5,  // 20: ermite.RepoService.ListRepos:output_type -> ermite.ListReposResponse
1059	7,  // 21: ermite.RepoService.GetRepo:output_type -> ermite.GetRepoResponse
1060	9,  // 22: ermite.RepoService.CreateRepo:output_type -> ermite.CreateRepoResponse
1061	11, // 23: ermite.RepoService.UpdateRepo:output_type -> ermite.UpdateRepoResponse
1062	13, // 24: ermite.RepoService.DeleteRepo:output_type -> ermite.DeleteRepoResponse
1063	20, // [20:25] is the sub-list for method output_type
1064	15, // [15:20] is the sub-list for method input_type
1065	15, // [15:15] is the sub-list for extension type_name
1066	15, // [15:15] is the sub-list for extension extendee
1067	0,  // [0:15] is the sub-list for field type_name
1068}
1069
1070func init() { file_ermite_repo_proto_init() }
1071func file_ermite_repo_proto_init() {
1072	if File_ermite_repo_proto != nil {
1073		return
1074	}
1075	file_ermite_types_proto_init()
1076	file_ermite_repo_proto_msgTypes[8].OneofWrappers = []any{}
1077	type x struct{}
1078	out := protoimpl.TypeBuilder{
1079		File: protoimpl.DescBuilder{
1080			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1081			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_repo_proto_rawDesc), len(file_ermite_repo_proto_rawDesc)),
1082			NumEnums:      2,
1083			NumMessages:   12,
1084			NumExtensions: 0,
1085			NumServices:   1,
1086		},
1087		GoTypes:           file_ermite_repo_proto_goTypes,
1088		DependencyIndexes: file_ermite_repo_proto_depIdxs,
1089		EnumInfos:         file_ermite_repo_proto_enumTypes,
1090		MessageInfos:      file_ermite_repo_proto_msgTypes,
1091	}.Build()
1092	File_ermite_repo_proto = out.File
1093	file_ermite_repo_proto_goTypes = nil
1094	file_ermite_repo_proto_depIdxs = nil
1095}

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