main 81ede3b

git.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/git.proto
8
9package ermite
10
11import (
12	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
13	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
14	reflect "reflect"
15	sync "sync"
16	unsafe "unsafe"
17)
18
19const (
20	// Verify that this generated code is sufficiently up-to-date.
21	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
22	// Verify that runtime/protoimpl is sufficiently up-to-date.
23	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
24)
25
26// RefKind is the kind of a Git ref.
27type RefKind int32
28
29const (
30	// Not set. In ListRefsRequest.kinds it is rejected; never returned.
31	RefKind_REF_KIND_UNSPECIFIED RefKind = 0
32	// A branch (refs/heads/*).
33	RefKind_REF_KIND_BRANCH RefKind = 1
34	// A tag (refs/tags/*), lightweight or annotated.
35	RefKind_REF_KIND_TAG RefKind = 2
36	// The symbolic ref HEAD, that is the default branch.
37	RefKind_REF_KIND_HEAD RefKind = 3
38)
39
40// Enum value maps for RefKind.
41var (
42	RefKind_name = map[int32]string{
43		0: "REF_KIND_UNSPECIFIED",
44		1: "REF_KIND_BRANCH",
45		2: "REF_KIND_TAG",
46		3: "REF_KIND_HEAD",
47	}
48	RefKind_value = map[string]int32{
49		"REF_KIND_UNSPECIFIED": 0,
50		"REF_KIND_BRANCH":      1,
51		"REF_KIND_TAG":         2,
52		"REF_KIND_HEAD":        3,
53	}
54)
55
56func (x RefKind) Enum() *RefKind {
57	p := new(RefKind)
58	*p = x
59	return p
60}
61
62func (x RefKind) String() string {
63	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
64}
65
66func (RefKind) Descriptor() protoreflect.EnumDescriptor {
67	return file_ermite_git_proto_enumTypes[0].Descriptor()
68}
69
70func (RefKind) Type() protoreflect.EnumType {
71	return &file_ermite_git_proto_enumTypes[0]
72}
73
74func (x RefKind) Number() protoreflect.EnumNumber {
75	return protoreflect.EnumNumber(x)
76}
77
78// Deprecated: Use RefKind.Descriptor instead.
79func (RefKind) EnumDescriptor() ([]byte, []int) {
80	return file_ermite_git_proto_rawDescGZIP(), []int{0}
81}
82
83// EntryKind is the kind of an entry of a Git tree.
84type EntryKind int32
85
86const (
87	// Not set. Never returned.
88	EntryKind_ENTRY_KIND_UNSPECIFIED EntryKind = 0
89	// A regular, non-executable file (mode 100644).
90	EntryKind_ENTRY_KIND_FILE EntryKind = 1
91	// An executable file (mode 100755).
92	EntryKind_ENTRY_KIND_EXECUTABLE EntryKind = 2
93	// A directory (mode 040000).
94	EntryKind_ENTRY_KIND_DIRECTORY EntryKind = 3
95	// A symbolic link (mode 120000). The blob content is the link target.
96	EntryKind_ENTRY_KIND_SYMLINK EntryKind = 4
97	// A submodule commit (mode 160000). The id is a commit of another
98	// repository, which this one does not contain.
99	EntryKind_ENTRY_KIND_SUBMODULE EntryKind = 5
100)
101
102// Enum value maps for EntryKind.
103var (
104	EntryKind_name = map[int32]string{
105		0: "ENTRY_KIND_UNSPECIFIED",
106		1: "ENTRY_KIND_FILE",
107		2: "ENTRY_KIND_EXECUTABLE",
108		3: "ENTRY_KIND_DIRECTORY",
109		4: "ENTRY_KIND_SYMLINK",
110		5: "ENTRY_KIND_SUBMODULE",
111	}
112	EntryKind_value = map[string]int32{
113		"ENTRY_KIND_UNSPECIFIED": 0,
114		"ENTRY_KIND_FILE":        1,
115		"ENTRY_KIND_EXECUTABLE":  2,
116		"ENTRY_KIND_DIRECTORY":   3,
117		"ENTRY_KIND_SYMLINK":     4,
118		"ENTRY_KIND_SUBMODULE":   5,
119	}
120)
121
122func (x EntryKind) Enum() *EntryKind {
123	p := new(EntryKind)
124	*p = x
125	return p
126}
127
128func (x EntryKind) String() string {
129	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
130}
131
132func (EntryKind) Descriptor() protoreflect.EnumDescriptor {
133	return file_ermite_git_proto_enumTypes[1].Descriptor()
134}
135
136func (EntryKind) Type() protoreflect.EnumType {
137	return &file_ermite_git_proto_enumTypes[1]
138}
139
140func (x EntryKind) Number() protoreflect.EnumNumber {
141	return protoreflect.EnumNumber(x)
142}
143
144// Deprecated: Use EntryKind.Descriptor instead.
145func (EntryKind) EnumDescriptor() ([]byte, []int) {
146	return file_ermite_git_proto_rawDescGZIP(), []int{1}
147}
148
149// FileStatus tells what a commit did to a file.
150type FileStatus int32
151
152const (
153	// Not set. Never returned.
154	FileStatus_FILE_STATUS_UNSPECIFIED FileStatus = 0
155	// The file was added.
156	FileStatus_FILE_STATUS_ADDED FileStatus = 1
157	// The file was deleted.
158	FileStatus_FILE_STATUS_DELETED FileStatus = 2
159	// The content or the mode of the file changed.
160	FileStatus_FILE_STATUS_MODIFIED FileStatus = 3
161	// The file was moved, possibly with changes. Rename detection is done by Git.
162	FileStatus_FILE_STATUS_RENAMED FileStatus = 4
163	// The file was copied from another file, possibly with changes.
164	FileStatus_FILE_STATUS_COPIED FileStatus = 5
165	// The type of the entry changed, for example a file became a symbolic link.
166	FileStatus_FILE_STATUS_TYPE_CHANGED FileStatus = 6
167)
168
169// Enum value maps for FileStatus.
170var (
171	FileStatus_name = map[int32]string{
172		0: "FILE_STATUS_UNSPECIFIED",
173		1: "FILE_STATUS_ADDED",
174		2: "FILE_STATUS_DELETED",
175		3: "FILE_STATUS_MODIFIED",
176		4: "FILE_STATUS_RENAMED",
177		5: "FILE_STATUS_COPIED",
178		6: "FILE_STATUS_TYPE_CHANGED",
179	}
180	FileStatus_value = map[string]int32{
181		"FILE_STATUS_UNSPECIFIED":  0,
182		"FILE_STATUS_ADDED":        1,
183		"FILE_STATUS_DELETED":      2,
184		"FILE_STATUS_MODIFIED":     3,
185		"FILE_STATUS_RENAMED":      4,
186		"FILE_STATUS_COPIED":       5,
187		"FILE_STATUS_TYPE_CHANGED": 6,
188	}
189)
190
191func (x FileStatus) Enum() *FileStatus {
192	p := new(FileStatus)
193	*p = x
194	return p
195}
196
197func (x FileStatus) String() string {
198	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
199}
200
201func (FileStatus) Descriptor() protoreflect.EnumDescriptor {
202	return file_ermite_git_proto_enumTypes[2].Descriptor()
203}
204
205func (FileStatus) Type() protoreflect.EnumType {
206	return &file_ermite_git_proto_enumTypes[2]
207}
208
209func (x FileStatus) Number() protoreflect.EnumNumber {
210	return protoreflect.EnumNumber(x)
211}
212
213// Deprecated: Use FileStatus.Descriptor instead.
214func (FileStatus) EnumDescriptor() ([]byte, []int) {
215	return file_ermite_git_proto_rawDescGZIP(), []int{2}
216}
217
218// FileOmission tells why a changed file has no hunks although it changed.
219type FileOmission int32
220
221const (
222	// The file is not omitted: its hunks are present, or it has none to show
223	// (binary, pure rename, mode change), or it is outside the requested window.
224	FileOmission_FILE_OMISSION_UNSPECIFIED FileOmission = 0
225	// The file is generated or vendored, by its path: its hunks were not read.
226	// It can be read on its own.
227	FileOmission_FILE_OMISSION_GENERATED FileOmission = 1
228	// The file changes more lines than the per-file limit. It can be read on its own.
229	FileOmission_FILE_OMISSION_LARGE FileOmission = 2
230	// The file did not fit in what remained of the total limits of the diff.
231	// It can be read on its own.
232	FileOmission_FILE_OMISSION_BUDGET FileOmission = 3
233	// The file's text exceeds the memory limit of a diff: it cannot be shown,
234	// even on its own. Clone the repository to read it.
235	FileOmission_FILE_OMISSION_UNAVAILABLE FileOmission = 4
236)
237
238// Enum value maps for FileOmission.
239var (
240	FileOmission_name = map[int32]string{
241		0: "FILE_OMISSION_UNSPECIFIED",
242		1: "FILE_OMISSION_GENERATED",
243		2: "FILE_OMISSION_LARGE",
244		3: "FILE_OMISSION_BUDGET",
245		4: "FILE_OMISSION_UNAVAILABLE",
246	}
247	FileOmission_value = map[string]int32{
248		"FILE_OMISSION_UNSPECIFIED": 0,
249		"FILE_OMISSION_GENERATED":   1,
250		"FILE_OMISSION_LARGE":       2,
251		"FILE_OMISSION_BUDGET":      3,
252		"FILE_OMISSION_UNAVAILABLE": 4,
253	}
254)
255
256func (x FileOmission) Enum() *FileOmission {
257	p := new(FileOmission)
258	*p = x
259	return p
260}
261
262func (x FileOmission) String() string {
263	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
264}
265
266func (FileOmission) Descriptor() protoreflect.EnumDescriptor {
267	return file_ermite_git_proto_enumTypes[3].Descriptor()
268}
269
270func (FileOmission) Type() protoreflect.EnumType {
271	return &file_ermite_git_proto_enumTypes[3]
272}
273
274func (x FileOmission) Number() protoreflect.EnumNumber {
275	return protoreflect.EnumNumber(x)
276}
277
278// Deprecated: Use FileOmission.Descriptor instead.
279func (FileOmission) EnumDescriptor() ([]byte, []int) {
280	return file_ermite_git_proto_rawDescGZIP(), []int{3}
281}
282
283// LineKind tells how a line of a hunk relates to the two sides of a diff.
284type LineKind int32
285
286const (
287	// Not set. Never returned.
288	LineKind_LINE_KIND_UNSPECIFIED LineKind = 0
289	// The line is present, unchanged, on both sides.
290	LineKind_LINE_KIND_CONTEXT LineKind = 1
291	// The line exists only on the new side.
292	LineKind_LINE_KIND_ADDITION LineKind = 2
293	// The line exists only on the old side.
294	LineKind_LINE_KIND_DELETION LineKind = 3
295)
296
297// Enum value maps for LineKind.
298var (
299	LineKind_name = map[int32]string{
300		0: "LINE_KIND_UNSPECIFIED",
301		1: "LINE_KIND_CONTEXT",
302		2: "LINE_KIND_ADDITION",
303		3: "LINE_KIND_DELETION",
304	}
305	LineKind_value = map[string]int32{
306		"LINE_KIND_UNSPECIFIED": 0,
307		"LINE_KIND_CONTEXT":     1,
308		"LINE_KIND_ADDITION":    2,
309		"LINE_KIND_DELETION":    3,
310	}
311)
312
313func (x LineKind) Enum() *LineKind {
314	p := new(LineKind)
315	*p = x
316	return p
317}
318
319func (x LineKind) String() string {
320	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
321}
322
323func (LineKind) Descriptor() protoreflect.EnumDescriptor {
324	return file_ermite_git_proto_enumTypes[4].Descriptor()
325}
326
327func (LineKind) Type() protoreflect.EnumType {
328	return &file_ermite_git_proto_enumTypes[4]
329}
330
331func (x LineKind) Number() protoreflect.EnumNumber {
332	return protoreflect.EnumNumber(x)
333}
334
335// Deprecated: Use LineKind.Descriptor instead.
336func (LineKind) EnumDescriptor() ([]byte, []int) {
337	return file_ermite_git_proto_rawDescGZIP(), []int{4}
338}
339
340// Ref is a branch, a tag or HEAD.
341type Ref struct {
342	state protoimpl.MessageState `protogen:"open.v1"`
343	// Name is the full ref name, for example "refs/heads/main" or
344	// "refs/tags/v1.0.0". For HEAD it is "HEAD".
345	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
346	// ShortName is the name without its "refs/heads/" or "refs/tags/" prefix. For
347	// HEAD it is the short name of the default branch, or empty if HEAD points
348	// to a branch that does not exist yet.
349	ShortName string `protobuf:"bytes,2,opt,name=short_name,json=shortName,proto3" json:"short_name,omitempty"`
350	// Kind is the kind of the ref.
351	Kind RefKind `protobuf:"varint,3,opt,name=kind,proto3,enum=ermite.RefKind" json:"kind,omitempty"`
352	// Id is the id of the object the ref points to. For an annotated tag it is
353	// the id of the tag object.
354	Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"`
355	// CommitId is the id of the commit the ref designates once annotated tags are
356	// followed. It equals id for branches and lightweight tags. It is empty for
357	// a tag that points to something other than a commit.
358	CommitId      string `protobuf:"bytes,5,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
359	unknownFields protoimpl.UnknownFields
360	sizeCache     protoimpl.SizeCache
361}
362
363func (x *Ref) Reset() {
364	*x = Ref{}
365	mi := &file_ermite_git_proto_msgTypes[0]
366	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
367	ms.StoreMessageInfo(mi)
368}
369
370func (x *Ref) String() string {
371	return protoimpl.X.MessageStringOf(x)
372}
373
374func (*Ref) ProtoMessage() {}
375
376func (x *Ref) ProtoReflect() protoreflect.Message {
377	mi := &file_ermite_git_proto_msgTypes[0]
378	if x != nil {
379		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
380		if ms.LoadMessageInfo() == nil {
381			ms.StoreMessageInfo(mi)
382		}
383		return ms
384	}
385	return mi.MessageOf(x)
386}
387
388// Deprecated: Use Ref.ProtoReflect.Descriptor instead.
389func (*Ref) Descriptor() ([]byte, []int) {
390	return file_ermite_git_proto_rawDescGZIP(), []int{0}
391}
392
393func (x *Ref) GetName() string {
394	if x != nil {
395		return x.Name
396	}
397	return ""
398}
399
400func (x *Ref) GetShortName() string {
401	if x != nil {
402		return x.ShortName
403	}
404	return ""
405}
406
407func (x *Ref) GetKind() RefKind {
408	if x != nil {
409		return x.Kind
410	}
411	return RefKind_REF_KIND_UNSPECIFIED
412}
413
414func (x *Ref) GetId() string {
415	if x != nil {
416		return x.Id
417	}
418	return ""
419}
420
421func (x *Ref) GetCommitId() string {
422	if x != nil {
423		return x.CommitId
424	}
425	return ""
426}
427
428// ListRefsRequest selects the refs to list.
429type ListRefsRequest struct {
430	state protoimpl.MessageState `protogen:"open.v1"`
431	// Repo is the repository name.
432	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
433	// Kinds restricts the result to these kinds. Empty means all kinds.
434	Kinds []RefKind `protobuf:"varint,2,rep,packed,name=kinds,proto3,enum=ermite.RefKind" json:"kinds,omitempty"`
435	// PageSize is the maximum number of refs to return. 0 means the server
436	// default; values above the server maximum are lowered to it.
437	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
438	// PageToken is the next_page_token of a previous response. Empty for the
439	// first page.
440	PageToken     string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
441	unknownFields protoimpl.UnknownFields
442	sizeCache     protoimpl.SizeCache
443}
444
445func (x *ListRefsRequest) Reset() {
446	*x = ListRefsRequest{}
447	mi := &file_ermite_git_proto_msgTypes[1]
448	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
449	ms.StoreMessageInfo(mi)
450}
451
452func (x *ListRefsRequest) String() string {
453	return protoimpl.X.MessageStringOf(x)
454}
455
456func (*ListRefsRequest) ProtoMessage() {}
457
458func (x *ListRefsRequest) ProtoReflect() protoreflect.Message {
459	mi := &file_ermite_git_proto_msgTypes[1]
460	if x != nil {
461		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
462		if ms.LoadMessageInfo() == nil {
463			ms.StoreMessageInfo(mi)
464		}
465		return ms
466	}
467	return mi.MessageOf(x)
468}
469
470// Deprecated: Use ListRefsRequest.ProtoReflect.Descriptor instead.
471func (*ListRefsRequest) Descriptor() ([]byte, []int) {
472	return file_ermite_git_proto_rawDescGZIP(), []int{1}
473}
474
475func (x *ListRefsRequest) GetRepo() string {
476	if x != nil {
477		return x.Repo
478	}
479	return ""
480}
481
482func (x *ListRefsRequest) GetKinds() []RefKind {
483	if x != nil {
484		return x.Kinds
485	}
486	return nil
487}
488
489func (x *ListRefsRequest) GetPageSize() int32 {
490	if x != nil {
491		return x.PageSize
492	}
493	return 0
494}
495
496func (x *ListRefsRequest) GetPageToken() string {
497	if x != nil {
498		return x.PageToken
499	}
500	return ""
501}
502
503// ListRefsResponse is one page of refs.
504type ListRefsResponse struct {
505	state protoimpl.MessageState `protogen:"open.v1"`
506	// Refs are the refs of this page.
507	Refs []*Ref `protobuf:"bytes,1,rep,name=refs,proto3" json:"refs,omitempty"`
508	// NextPageToken is passed as page_token to get the next page. Empty when
509	// there is no next page.
510	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
511	unknownFields protoimpl.UnknownFields
512	sizeCache     protoimpl.SizeCache
513}
514
515func (x *ListRefsResponse) Reset() {
516	*x = ListRefsResponse{}
517	mi := &file_ermite_git_proto_msgTypes[2]
518	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
519	ms.StoreMessageInfo(mi)
520}
521
522func (x *ListRefsResponse) String() string {
523	return protoimpl.X.MessageStringOf(x)
524}
525
526func (*ListRefsResponse) ProtoMessage() {}
527
528func (x *ListRefsResponse) ProtoReflect() protoreflect.Message {
529	mi := &file_ermite_git_proto_msgTypes[2]
530	if x != nil {
531		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
532		if ms.LoadMessageInfo() == nil {
533			ms.StoreMessageInfo(mi)
534		}
535		return ms
536	}
537	return mi.MessageOf(x)
538}
539
540// Deprecated: Use ListRefsResponse.ProtoReflect.Descriptor instead.
541func (*ListRefsResponse) Descriptor() ([]byte, []int) {
542	return file_ermite_git_proto_rawDescGZIP(), []int{2}
543}
544
545func (x *ListRefsResponse) GetRefs() []*Ref {
546	if x != nil {
547		return x.Refs
548	}
549	return nil
550}
551
552func (x *ListRefsResponse) GetNextPageToken() string {
553	if x != nil {
554		return x.NextPageToken
555	}
556	return ""
557}
558
559// TreeEntry is one entry of a directory.
560type TreeEntry struct {
561	state protoimpl.MessageState `protogen:"open.v1"`
562	// Name is the name of the entry in its directory, without slash.
563	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
564	// Path is the path of the entry from the repository root, with "/"
565	// separators and no leading slash.
566	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
567	// Kind is the kind of the entry.
568	Kind EntryKind `protobuf:"varint,3,opt,name=kind,proto3,enum=ermite.EntryKind" json:"kind,omitempty"`
569	// Mode is the Git file mode, for example 0o100644 (33188 in decimal).
570	Mode uint32 `protobuf:"varint,4,opt,name=mode,proto3" json:"mode,omitempty"`
571	// Id is the object id of the blob, tree or submodule commit.
572	Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`
573	// Size is the size in bytes of a file or symbolic link. It is 0 for
574	// directories and submodules.
575	Size int64 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"`
576	// LastCommit is the latest commit that changed the entry. Set only when the
577	// request asked for it with include_last_commit.
578	LastCommit    *Commit `protobuf:"bytes,7,opt,name=last_commit,json=lastCommit,proto3" json:"last_commit,omitempty"`
579	unknownFields protoimpl.UnknownFields
580	sizeCache     protoimpl.SizeCache
581}
582
583func (x *TreeEntry) Reset() {
584	*x = TreeEntry{}
585	mi := &file_ermite_git_proto_msgTypes[3]
586	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
587	ms.StoreMessageInfo(mi)
588}
589
590func (x *TreeEntry) String() string {
591	return protoimpl.X.MessageStringOf(x)
592}
593
594func (*TreeEntry) ProtoMessage() {}
595
596func (x *TreeEntry) ProtoReflect() protoreflect.Message {
597	mi := &file_ermite_git_proto_msgTypes[3]
598	if x != nil {
599		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
600		if ms.LoadMessageInfo() == nil {
601			ms.StoreMessageInfo(mi)
602		}
603		return ms
604	}
605	return mi.MessageOf(x)
606}
607
608// Deprecated: Use TreeEntry.ProtoReflect.Descriptor instead.
609func (*TreeEntry) Descriptor() ([]byte, []int) {
610	return file_ermite_git_proto_rawDescGZIP(), []int{3}
611}
612
613func (x *TreeEntry) GetName() string {
614	if x != nil {
615		return x.Name
616	}
617	return ""
618}
619
620func (x *TreeEntry) GetPath() string {
621	if x != nil {
622		return x.Path
623	}
624	return ""
625}
626
627func (x *TreeEntry) GetKind() EntryKind {
628	if x != nil {
629		return x.Kind
630	}
631	return EntryKind_ENTRY_KIND_UNSPECIFIED
632}
633
634func (x *TreeEntry) GetMode() uint32 {
635	if x != nil {
636		return x.Mode
637	}
638	return 0
639}
640
641func (x *TreeEntry) GetId() string {
642	if x != nil {
643		return x.Id
644	}
645	return ""
646}
647
648func (x *TreeEntry) GetSize() int64 {
649	if x != nil {
650		return x.Size
651	}
652	return 0
653}
654
655func (x *TreeEntry) GetLastCommit() *Commit {
656	if x != nil {
657		return x.LastCommit
658	}
659	return nil
660}
661
662// GetTreeRequest selects a directory.
663type GetTreeRequest struct {
664	state protoimpl.MessageState `protogen:"open.v1"`
665	// Repo is the repository name.
666	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
667	// Revision is a branch, a tag or a commit id. Empty means HEAD.
668	Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
669	// Path is the directory, from the repository root, with "/" separators.
670	// Empty means the root.
671	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
672	// IncludeLastCommit asks for the last commit of every entry in last_commit.
673	// It costs one history walk, so it is off by default and the server may be
674	// slow on large directories.
675	IncludeLastCommit bool `protobuf:"varint,4,opt,name=include_last_commit,json=includeLastCommit,proto3" json:"include_last_commit,omitempty"`
676	unknownFields     protoimpl.UnknownFields
677	sizeCache         protoimpl.SizeCache
678}
679
680func (x *GetTreeRequest) Reset() {
681	*x = GetTreeRequest{}
682	mi := &file_ermite_git_proto_msgTypes[4]
683	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
684	ms.StoreMessageInfo(mi)
685}
686
687func (x *GetTreeRequest) String() string {
688	return protoimpl.X.MessageStringOf(x)
689}
690
691func (*GetTreeRequest) ProtoMessage() {}
692
693func (x *GetTreeRequest) ProtoReflect() protoreflect.Message {
694	mi := &file_ermite_git_proto_msgTypes[4]
695	if x != nil {
696		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
697		if ms.LoadMessageInfo() == nil {
698			ms.StoreMessageInfo(mi)
699		}
700		return ms
701	}
702	return mi.MessageOf(x)
703}
704
705// Deprecated: Use GetTreeRequest.ProtoReflect.Descriptor instead.
706func (*GetTreeRequest) Descriptor() ([]byte, []int) {
707	return file_ermite_git_proto_rawDescGZIP(), []int{4}
708}
709
710func (x *GetTreeRequest) GetRepo() string {
711	if x != nil {
712		return x.Repo
713	}
714	return ""
715}
716
717func (x *GetTreeRequest) GetRevision() string {
718	if x != nil {
719		return x.Revision
720	}
721	return ""
722}
723
724func (x *GetTreeRequest) GetPath() string {
725	if x != nil {
726		return x.Path
727	}
728	return ""
729}
730
731func (x *GetTreeRequest) GetIncludeLastCommit() bool {
732	if x != nil {
733		return x.IncludeLastCommit
734	}
735	return false
736}
737
738// GetTreeResponse lists a directory.
739type GetTreeResponse struct {
740	state protoimpl.MessageState `protogen:"open.v1"`
741	// CommitId is the id of the commit the revision resolved to.
742	CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
743	// TreeId is the object id of the listed directory.
744	TreeId string `protobuf:"bytes,2,opt,name=tree_id,json=treeId,proto3" json:"tree_id,omitempty"`
745	// Entries are the entries of the directory: directories first, then the other
746	// entries, each group ordered by name. A response holds at most 5,000
747	// entries (a server limit that may change; rely on truncated, not on the
748	// number): past that, the first 5,000 in this order are returned and
749	// truncated is set. Paging may be added later, additively.
750	Entries []*TreeEntry `protobuf:"bytes,3,rep,name=entries,proto3" json:"entries,omitempty"`
751	// LastCommitsTruncated is true when include_last_commit was set and the
752	// server gave a last_commit to the first entries only (at most 200 of them,
753	// in the order of entries), because each one costs a history lookup. The
754	// other entries have no last_commit although they have one in Git.
755	LastCommitsTruncated bool `protobuf:"varint,4,opt,name=last_commits_truncated,json=lastCommitsTruncated,proto3" json:"last_commits_truncated,omitempty"`
756	// Truncated is true when the directory has more entries than the response
757	// holds; entries are then the first ones in the documented order.
758	Truncated     bool `protobuf:"varint,5,opt,name=truncated,proto3" json:"truncated,omitempty"`
759	unknownFields protoimpl.UnknownFields
760	sizeCache     protoimpl.SizeCache
761}
762
763func (x *GetTreeResponse) Reset() {
764	*x = GetTreeResponse{}
765	mi := &file_ermite_git_proto_msgTypes[5]
766	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
767	ms.StoreMessageInfo(mi)
768}
769
770func (x *GetTreeResponse) String() string {
771	return protoimpl.X.MessageStringOf(x)
772}
773
774func (*GetTreeResponse) ProtoMessage() {}
775
776func (x *GetTreeResponse) ProtoReflect() protoreflect.Message {
777	mi := &file_ermite_git_proto_msgTypes[5]
778	if x != nil {
779		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
780		if ms.LoadMessageInfo() == nil {
781			ms.StoreMessageInfo(mi)
782		}
783		return ms
784	}
785	return mi.MessageOf(x)
786}
787
788// Deprecated: Use GetTreeResponse.ProtoReflect.Descriptor instead.
789func (*GetTreeResponse) Descriptor() ([]byte, []int) {
790	return file_ermite_git_proto_rawDescGZIP(), []int{5}
791}
792
793func (x *GetTreeResponse) GetCommitId() string {
794	if x != nil {
795		return x.CommitId
796	}
797	return ""
798}
799
800func (x *GetTreeResponse) GetTreeId() string {
801	if x != nil {
802		return x.TreeId
803	}
804	return ""
805}
806
807func (x *GetTreeResponse) GetEntries() []*TreeEntry {
808	if x != nil {
809		return x.Entries
810	}
811	return nil
812}
813
814func (x *GetTreeResponse) GetLastCommitsTruncated() bool {
815	if x != nil {
816		return x.LastCommitsTruncated
817	}
818	return false
819}
820
821func (x *GetTreeResponse) GetTruncated() bool {
822	if x != nil {
823		return x.Truncated
824	}
825	return false
826}
827
828// ListPathsRequest selects a revision.
829type ListPathsRequest struct {
830	state protoimpl.MessageState `protogen:"open.v1"`
831	// Repo is the repository name.
832	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
833	// Revision is a branch, a tag or a commit id. Empty means HEAD.
834	Revision      string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
835	unknownFields protoimpl.UnknownFields
836	sizeCache     protoimpl.SizeCache
837}
838
839func (x *ListPathsRequest) Reset() {
840	*x = ListPathsRequest{}
841	mi := &file_ermite_git_proto_msgTypes[6]
842	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
843	ms.StoreMessageInfo(mi)
844}
845
846func (x *ListPathsRequest) String() string {
847	return protoimpl.X.MessageStringOf(x)
848}
849
850func (*ListPathsRequest) ProtoMessage() {}
851
852func (x *ListPathsRequest) ProtoReflect() protoreflect.Message {
853	mi := &file_ermite_git_proto_msgTypes[6]
854	if x != nil {
855		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
856		if ms.LoadMessageInfo() == nil {
857			ms.StoreMessageInfo(mi)
858		}
859		return ms
860	}
861	return mi.MessageOf(x)
862}
863
864// Deprecated: Use ListPathsRequest.ProtoReflect.Descriptor instead.
865func (*ListPathsRequest) Descriptor() ([]byte, []int) {
866	return file_ermite_git_proto_rawDescGZIP(), []int{6}
867}
868
869func (x *ListPathsRequest) GetRepo() string {
870	if x != nil {
871		return x.Repo
872	}
873	return ""
874}
875
876func (x *ListPathsRequest) GetRevision() string {
877	if x != nil {
878		return x.Revision
879	}
880	return ""
881}
882
883// ListPathsResponse lists the file paths of a revision.
884type ListPathsResponse struct {
885	state protoimpl.MessageState `protogen:"open.v1"`
886	// CommitId is the id of the commit the revision resolved to.
887	CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
888	// TreeId is the object id of its root tree.
889	TreeId string `protobuf:"bytes,2,opt,name=tree_id,json=treeId,proto3" json:"tree_id,omitempty"`
890	// Paths are the paths of the files and symbolic links, in Git tree order. A
891	// response holds at most 100,000 paths and 8 MiB of path bytes (server limits
892	// that may change; rely on truncated, not on the numbers).
893	Paths []string `protobuf:"bytes,3,rep,name=paths,proto3" json:"paths,omitempty"`
894	// Truncated is true when more paths exist past the first ones returned.
895	Truncated     bool `protobuf:"varint,4,opt,name=truncated,proto3" json:"truncated,omitempty"`
896	unknownFields protoimpl.UnknownFields
897	sizeCache     protoimpl.SizeCache
898}
899
900func (x *ListPathsResponse) Reset() {
901	*x = ListPathsResponse{}
902	mi := &file_ermite_git_proto_msgTypes[7]
903	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
904	ms.StoreMessageInfo(mi)
905}
906
907func (x *ListPathsResponse) String() string {
908	return protoimpl.X.MessageStringOf(x)
909}
910
911func (*ListPathsResponse) ProtoMessage() {}
912
913func (x *ListPathsResponse) ProtoReflect() protoreflect.Message {
914	mi := &file_ermite_git_proto_msgTypes[7]
915	if x != nil {
916		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
917		if ms.LoadMessageInfo() == nil {
918			ms.StoreMessageInfo(mi)
919		}
920		return ms
921	}
922	return mi.MessageOf(x)
923}
924
925// Deprecated: Use ListPathsResponse.ProtoReflect.Descriptor instead.
926func (*ListPathsResponse) Descriptor() ([]byte, []int) {
927	return file_ermite_git_proto_rawDescGZIP(), []int{7}
928}
929
930func (x *ListPathsResponse) GetCommitId() string {
931	if x != nil {
932		return x.CommitId
933	}
934	return ""
935}
936
937func (x *ListPathsResponse) GetTreeId() string {
938	if x != nil {
939		return x.TreeId
940	}
941	return ""
942}
943
944func (x *ListPathsResponse) GetPaths() []string {
945	if x != nil {
946		return x.Paths
947	}
948	return nil
949}
950
951func (x *ListPathsResponse) GetTruncated() bool {
952	if x != nil {
953		return x.Truncated
954	}
955	return false
956}
957
958// BlobInfo describes a file.
959type BlobInfo struct {
960	state protoimpl.MessageState `protogen:"open.v1"`
961	// Id is the object id of the blob.
962	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
963	// Path is the path of the file from the repository root.
964	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
965	// Size is the size of the whole content in bytes.
966	Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
967	// Binary is true if the content is binary, with Git's rule: a NUL byte in the
968	// first 8,000 bytes.
969	Binary bool `protobuf:"varint,4,opt,name=binary,proto3" json:"binary,omitempty"`
970	// MediaType is the detected media type, for example "text/plain" or
971	// "image/png", from the file name and the first bytes. It is
972	// "application/octet-stream" when unknown.
973	MediaType string `protobuf:"bytes,5,opt,name=media_type,json=mediaType,proto3" json:"media_type,omitempty"`
974	// Mode is the Git file mode, for example 0o100644 (33188 in decimal).
975	Mode          uint32 `protobuf:"varint,6,opt,name=mode,proto3" json:"mode,omitempty"`
976	unknownFields protoimpl.UnknownFields
977	sizeCache     protoimpl.SizeCache
978}
979
980func (x *BlobInfo) Reset() {
981	*x = BlobInfo{}
982	mi := &file_ermite_git_proto_msgTypes[8]
983	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
984	ms.StoreMessageInfo(mi)
985}
986
987func (x *BlobInfo) String() string {
988	return protoimpl.X.MessageStringOf(x)
989}
990
991func (*BlobInfo) ProtoMessage() {}
992
993func (x *BlobInfo) ProtoReflect() protoreflect.Message {
994	mi := &file_ermite_git_proto_msgTypes[8]
995	if x != nil {
996		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
997		if ms.LoadMessageInfo() == nil {
998			ms.StoreMessageInfo(mi)
999		}
1000		return ms
1001	}
1002	return mi.MessageOf(x)
1003}
1004
1005// Deprecated: Use BlobInfo.ProtoReflect.Descriptor instead.
1006func (*BlobInfo) Descriptor() ([]byte, []int) {
1007	return file_ermite_git_proto_rawDescGZIP(), []int{8}
1008}
1009
1010func (x *BlobInfo) GetId() string {
1011	if x != nil {
1012		return x.Id
1013	}
1014	return ""
1015}
1016
1017func (x *BlobInfo) GetPath() string {
1018	if x != nil {
1019		return x.Path
1020	}
1021	return ""
1022}
1023
1024func (x *BlobInfo) GetSize() int64 {
1025	if x != nil {
1026		return x.Size
1027	}
1028	return 0
1029}
1030
1031func (x *BlobInfo) GetBinary() bool {
1032	if x != nil {
1033		return x.Binary
1034	}
1035	return false
1036}
1037
1038func (x *BlobInfo) GetMediaType() string {
1039	if x != nil {
1040		return x.MediaType
1041	}
1042	return ""
1043}
1044
1045func (x *BlobInfo) GetMode() uint32 {
1046	if x != nil {
1047		return x.Mode
1048	}
1049	return 0
1050}
1051
1052// GetBlobRequest selects a file.
1053type GetBlobRequest struct {
1054	state protoimpl.MessageState `protogen:"open.v1"`
1055	// Repo is the repository name.
1056	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1057	// Revision is a branch, a tag or a commit id. Empty means HEAD.
1058	Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
1059	// Path is the file, from the repository root. It is required.
1060	Path          string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
1061	unknownFields protoimpl.UnknownFields
1062	sizeCache     protoimpl.SizeCache
1063}
1064
1065func (x *GetBlobRequest) Reset() {
1066	*x = GetBlobRequest{}
1067	mi := &file_ermite_git_proto_msgTypes[9]
1068	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1069	ms.StoreMessageInfo(mi)
1070}
1071
1072func (x *GetBlobRequest) String() string {
1073	return protoimpl.X.MessageStringOf(x)
1074}
1075
1076func (*GetBlobRequest) ProtoMessage() {}
1077
1078func (x *GetBlobRequest) ProtoReflect() protoreflect.Message {
1079	mi := &file_ermite_git_proto_msgTypes[9]
1080	if x != nil {
1081		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1082		if ms.LoadMessageInfo() == nil {
1083			ms.StoreMessageInfo(mi)
1084		}
1085		return ms
1086	}
1087	return mi.MessageOf(x)
1088}
1089
1090// Deprecated: Use GetBlobRequest.ProtoReflect.Descriptor instead.
1091func (*GetBlobRequest) Descriptor() ([]byte, []int) {
1092	return file_ermite_git_proto_rawDescGZIP(), []int{9}
1093}
1094
1095func (x *GetBlobRequest) GetRepo() string {
1096	if x != nil {
1097		return x.Repo
1098	}
1099	return ""
1100}
1101
1102func (x *GetBlobRequest) GetRevision() string {
1103	if x != nil {
1104		return x.Revision
1105	}
1106	return ""
1107}
1108
1109func (x *GetBlobRequest) GetPath() string {
1110	if x != nil {
1111		return x.Path
1112	}
1113	return ""
1114}
1115
1116// GetBlobResponse is one message of the content stream.
1117type GetBlobResponse struct {
1118	state protoimpl.MessageState `protogen:"open.v1"`
1119	// Info describes the file. Set in the first message of the stream only.
1120	Info *BlobInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
1121	// Chunk is the next part of the content, at most 64 KiB, in order. The first
1122	// message may have an empty chunk. The chunks of a stream add up to
1123	// info.size bytes.
1124	Chunk         []byte `protobuf:"bytes,2,opt,name=chunk,proto3" json:"chunk,omitempty"`
1125	unknownFields protoimpl.UnknownFields
1126	sizeCache     protoimpl.SizeCache
1127}
1128
1129func (x *GetBlobResponse) Reset() {
1130	*x = GetBlobResponse{}
1131	mi := &file_ermite_git_proto_msgTypes[10]
1132	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1133	ms.StoreMessageInfo(mi)
1134}
1135
1136func (x *GetBlobResponse) String() string {
1137	return protoimpl.X.MessageStringOf(x)
1138}
1139
1140func (*GetBlobResponse) ProtoMessage() {}
1141
1142func (x *GetBlobResponse) ProtoReflect() protoreflect.Message {
1143	mi := &file_ermite_git_proto_msgTypes[10]
1144	if x != nil {
1145		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1146		if ms.LoadMessageInfo() == nil {
1147			ms.StoreMessageInfo(mi)
1148		}
1149		return ms
1150	}
1151	return mi.MessageOf(x)
1152}
1153
1154// Deprecated: Use GetBlobResponse.ProtoReflect.Descriptor instead.
1155func (*GetBlobResponse) Descriptor() ([]byte, []int) {
1156	return file_ermite_git_proto_rawDescGZIP(), []int{10}
1157}
1158
1159func (x *GetBlobResponse) GetInfo() *BlobInfo {
1160	if x != nil {
1161		return x.Info
1162	}
1163	return nil
1164}
1165
1166func (x *GetBlobResponse) GetChunk() []byte {
1167	if x != nil {
1168		return x.Chunk
1169	}
1170	return nil
1171}
1172
1173// ListCommitsRequest selects a page of history.
1174type ListCommitsRequest struct {
1175	state protoimpl.MessageState `protogen:"open.v1"`
1176	// Repo is the repository name.
1177	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1178	// Revision is where the history starts: a branch, a tag or a commit id.
1179	// Empty means HEAD.
1180	Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
1181	// Path restricts the result to the commits that changed this file or
1182	// directory. Empty means the whole history.
1183	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
1184	// PageSize is the maximum number of commits to return. 0 means the server
1185	// default; values above 100 are lowered to 100.
1186	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1187	// PageToken is the next_page_token of a previous response, to continue the
1188	// same listing. Empty for the first page. Other fields must be unchanged.
1189	PageToken     string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
1190	unknownFields protoimpl.UnknownFields
1191	sizeCache     protoimpl.SizeCache
1192}
1193
1194func (x *ListCommitsRequest) Reset() {
1195	*x = ListCommitsRequest{}
1196	mi := &file_ermite_git_proto_msgTypes[11]
1197	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1198	ms.StoreMessageInfo(mi)
1199}
1200
1201func (x *ListCommitsRequest) String() string {
1202	return protoimpl.X.MessageStringOf(x)
1203}
1204
1205func (*ListCommitsRequest) ProtoMessage() {}
1206
1207func (x *ListCommitsRequest) ProtoReflect() protoreflect.Message {
1208	mi := &file_ermite_git_proto_msgTypes[11]
1209	if x != nil {
1210		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1211		if ms.LoadMessageInfo() == nil {
1212			ms.StoreMessageInfo(mi)
1213		}
1214		return ms
1215	}
1216	return mi.MessageOf(x)
1217}
1218
1219// Deprecated: Use ListCommitsRequest.ProtoReflect.Descriptor instead.
1220func (*ListCommitsRequest) Descriptor() ([]byte, []int) {
1221	return file_ermite_git_proto_rawDescGZIP(), []int{11}
1222}
1223
1224func (x *ListCommitsRequest) GetRepo() string {
1225	if x != nil {
1226		return x.Repo
1227	}
1228	return ""
1229}
1230
1231func (x *ListCommitsRequest) GetRevision() string {
1232	if x != nil {
1233		return x.Revision
1234	}
1235	return ""
1236}
1237
1238func (x *ListCommitsRequest) GetPath() string {
1239	if x != nil {
1240		return x.Path
1241	}
1242	return ""
1243}
1244
1245func (x *ListCommitsRequest) GetPageSize() int32 {
1246	if x != nil {
1247		return x.PageSize
1248	}
1249	return 0
1250}
1251
1252func (x *ListCommitsRequest) GetPageToken() string {
1253	if x != nil {
1254		return x.PageToken
1255	}
1256	return ""
1257}
1258
1259// ListCommitsResponse is one page of commits.
1260type ListCommitsResponse struct {
1261	state protoimpl.MessageState `protogen:"open.v1"`
1262	// Commits are the commits of this page, newest first.
1263	Commits []*Commit `protobuf:"bytes,1,rep,name=commits,proto3" json:"commits,omitempty"`
1264	// NextPageToken is passed as page_token to get the next page. Empty when
1265	// there is no next page.
1266	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1267	unknownFields protoimpl.UnknownFields
1268	sizeCache     protoimpl.SizeCache
1269}
1270
1271func (x *ListCommitsResponse) Reset() {
1272	*x = ListCommitsResponse{}
1273	mi := &file_ermite_git_proto_msgTypes[12]
1274	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1275	ms.StoreMessageInfo(mi)
1276}
1277
1278func (x *ListCommitsResponse) String() string {
1279	return protoimpl.X.MessageStringOf(x)
1280}
1281
1282func (*ListCommitsResponse) ProtoMessage() {}
1283
1284func (x *ListCommitsResponse) ProtoReflect() protoreflect.Message {
1285	mi := &file_ermite_git_proto_msgTypes[12]
1286	if x != nil {
1287		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1288		if ms.LoadMessageInfo() == nil {
1289			ms.StoreMessageInfo(mi)
1290		}
1291		return ms
1292	}
1293	return mi.MessageOf(x)
1294}
1295
1296// Deprecated: Use ListCommitsResponse.ProtoReflect.Descriptor instead.
1297func (*ListCommitsResponse) Descriptor() ([]byte, []int) {
1298	return file_ermite_git_proto_rawDescGZIP(), []int{12}
1299}
1300
1301func (x *ListCommitsResponse) GetCommits() []*Commit {
1302	if x != nil {
1303		return x.Commits
1304	}
1305	return nil
1306}
1307
1308func (x *ListCommitsResponse) GetNextPageToken() string {
1309	if x != nil {
1310		return x.NextPageToken
1311	}
1312	return ""
1313}
1314
1315// GetCommitRequest selects a commit.
1316type GetCommitRequest struct {
1317	state protoimpl.MessageState `protogen:"open.v1"`
1318	// Repo is the repository name.
1319	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1320	// Revision is a branch, a tag or a commit id. Empty means HEAD.
1321	Revision      string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
1322	unknownFields protoimpl.UnknownFields
1323	sizeCache     protoimpl.SizeCache
1324}
1325
1326func (x *GetCommitRequest) Reset() {
1327	*x = GetCommitRequest{}
1328	mi := &file_ermite_git_proto_msgTypes[13]
1329	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1330	ms.StoreMessageInfo(mi)
1331}
1332
1333func (x *GetCommitRequest) String() string {
1334	return protoimpl.X.MessageStringOf(x)
1335}
1336
1337func (*GetCommitRequest) ProtoMessage() {}
1338
1339func (x *GetCommitRequest) ProtoReflect() protoreflect.Message {
1340	mi := &file_ermite_git_proto_msgTypes[13]
1341	if x != nil {
1342		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1343		if ms.LoadMessageInfo() == nil {
1344			ms.StoreMessageInfo(mi)
1345		}
1346		return ms
1347	}
1348	return mi.MessageOf(x)
1349}
1350
1351// Deprecated: Use GetCommitRequest.ProtoReflect.Descriptor instead.
1352func (*GetCommitRequest) Descriptor() ([]byte, []int) {
1353	return file_ermite_git_proto_rawDescGZIP(), []int{13}
1354}
1355
1356func (x *GetCommitRequest) GetRepo() string {
1357	if x != nil {
1358		return x.Repo
1359	}
1360	return ""
1361}
1362
1363func (x *GetCommitRequest) GetRevision() string {
1364	if x != nil {
1365		return x.Revision
1366	}
1367	return ""
1368}
1369
1370// GetCommitResponse holds a commit, its statistics and its diff.
1371type GetCommitResponse struct {
1372	state protoimpl.MessageState `protogen:"open.v1"`
1373	// Commit is the commit metadata.
1374	Commit *Commit `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"`
1375	// Stats are the totals over all the changed files, including files that the
1376	// diff omits or truncates.
1377	Stats *DiffStats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
1378	// Diff is the structured diff against the first parent, or against the empty
1379	// tree for a root commit. For a merge commit this is the change relative to
1380	// the first parent.
1381	Diff          *Diff `protobuf:"bytes,3,opt,name=diff,proto3" json:"diff,omitempty"`
1382	unknownFields protoimpl.UnknownFields
1383	sizeCache     protoimpl.SizeCache
1384}
1385
1386func (x *GetCommitResponse) Reset() {
1387	*x = GetCommitResponse{}
1388	mi := &file_ermite_git_proto_msgTypes[14]
1389	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1390	ms.StoreMessageInfo(mi)
1391}
1392
1393func (x *GetCommitResponse) String() string {
1394	return protoimpl.X.MessageStringOf(x)
1395}
1396
1397func (*GetCommitResponse) ProtoMessage() {}
1398
1399func (x *GetCommitResponse) ProtoReflect() protoreflect.Message {
1400	mi := &file_ermite_git_proto_msgTypes[14]
1401	if x != nil {
1402		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1403		if ms.LoadMessageInfo() == nil {
1404			ms.StoreMessageInfo(mi)
1405		}
1406		return ms
1407	}
1408	return mi.MessageOf(x)
1409}
1410
1411// Deprecated: Use GetCommitResponse.ProtoReflect.Descriptor instead.
1412func (*GetCommitResponse) Descriptor() ([]byte, []int) {
1413	return file_ermite_git_proto_rawDescGZIP(), []int{14}
1414}
1415
1416func (x *GetCommitResponse) GetCommit() *Commit {
1417	if x != nil {
1418		return x.Commit
1419	}
1420	return nil
1421}
1422
1423func (x *GetCommitResponse) GetStats() *DiffStats {
1424	if x != nil {
1425		return x.Stats
1426	}
1427	return nil
1428}
1429
1430func (x *GetCommitResponse) GetDiff() *Diff {
1431	if x != nil {
1432		return x.Diff
1433	}
1434	return nil
1435}
1436
1437// DiffStats are the totals of a diff.
1438type DiffStats struct {
1439	state protoimpl.MessageState `protogen:"open.v1"`
1440	// FilesChanged is the number of changed files.
1441	FilesChanged int32 `protobuf:"varint,1,opt,name=files_changed,json=filesChanged,proto3" json:"files_changed,omitempty"`
1442	// Additions is the number of added lines. Binary files count for 0.
1443	Additions int32 `protobuf:"varint,2,opt,name=additions,proto3" json:"additions,omitempty"`
1444	// Deletions is the number of deleted lines. Binary files count for 0.
1445	Deletions     int32 `protobuf:"varint,3,opt,name=deletions,proto3" json:"deletions,omitempty"`
1446	unknownFields protoimpl.UnknownFields
1447	sizeCache     protoimpl.SizeCache
1448}
1449
1450func (x *DiffStats) Reset() {
1451	*x = DiffStats{}
1452	mi := &file_ermite_git_proto_msgTypes[15]
1453	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1454	ms.StoreMessageInfo(mi)
1455}
1456
1457func (x *DiffStats) String() string {
1458	return protoimpl.X.MessageStringOf(x)
1459}
1460
1461func (*DiffStats) ProtoMessage() {}
1462
1463func (x *DiffStats) ProtoReflect() protoreflect.Message {
1464	mi := &file_ermite_git_proto_msgTypes[15]
1465	if x != nil {
1466		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1467		if ms.LoadMessageInfo() == nil {
1468			ms.StoreMessageInfo(mi)
1469		}
1470		return ms
1471	}
1472	return mi.MessageOf(x)
1473}
1474
1475// Deprecated: Use DiffStats.ProtoReflect.Descriptor instead.
1476func (*DiffStats) Descriptor() ([]byte, []int) {
1477	return file_ermite_git_proto_rawDescGZIP(), []int{15}
1478}
1479
1480func (x *DiffStats) GetFilesChanged() int32 {
1481	if x != nil {
1482		return x.FilesChanged
1483	}
1484	return 0
1485}
1486
1487func (x *DiffStats) GetAdditions() int32 {
1488	if x != nil {
1489		return x.Additions
1490	}
1491	return 0
1492}
1493
1494func (x *DiffStats) GetDeletions() int32 {
1495	if x != nil {
1496		return x.Deletions
1497	}
1498	return 0
1499}
1500
1501// Diff is the structured difference introduced by a commit.
1502//
1503// The server limits its size: at most 300 files, at most 2,000 lines in one
1504// file and at most 20,000 lines in total (hunk lines, context included). These
1505// numbers are server behaviour and may change; clients must rely on the
1506// truncated flags, not on the numbers.
1507type Diff struct {
1508	state protoimpl.MessageState `protogen:"open.v1"`
1509	// Files are the changed files, ordered by path. Files past the file limit are
1510	// omitted.
1511	Files []*FileDiff `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
1512	// Truncated is true when the diff is incomplete: files were omitted past the
1513	// file limit, or at least one listed file has omitted set. DiffStats still count everything.
1514	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
1515	unknownFields protoimpl.UnknownFields
1516	sizeCache     protoimpl.SizeCache
1517}
1518
1519func (x *Diff) Reset() {
1520	*x = Diff{}
1521	mi := &file_ermite_git_proto_msgTypes[16]
1522	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1523	ms.StoreMessageInfo(mi)
1524}
1525
1526func (x *Diff) String() string {
1527	return protoimpl.X.MessageStringOf(x)
1528}
1529
1530func (*Diff) ProtoMessage() {}
1531
1532func (x *Diff) ProtoReflect() protoreflect.Message {
1533	mi := &file_ermite_git_proto_msgTypes[16]
1534	if x != nil {
1535		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1536		if ms.LoadMessageInfo() == nil {
1537			ms.StoreMessageInfo(mi)
1538		}
1539		return ms
1540	}
1541	return mi.MessageOf(x)
1542}
1543
1544// Deprecated: Use Diff.ProtoReflect.Descriptor instead.
1545func (*Diff) Descriptor() ([]byte, []int) {
1546	return file_ermite_git_proto_rawDescGZIP(), []int{16}
1547}
1548
1549func (x *Diff) GetFiles() []*FileDiff {
1550	if x != nil {
1551		return x.Files
1552	}
1553	return nil
1554}
1555
1556func (x *Diff) GetTruncated() bool {
1557	if x != nil {
1558		return x.Truncated
1559	}
1560	return false
1561}
1562
1563// FileDiff is the change of one file.
1564type FileDiff struct {
1565	state protoimpl.MessageState `protogen:"open.v1"`
1566	// OldPath is the path before the commit. Empty for an added file.
1567	OldPath string `protobuf:"bytes,1,opt,name=old_path,json=oldPath,proto3" json:"old_path,omitempty"`
1568	// NewPath is the path after the commit. Empty for a deleted file.
1569	NewPath string `protobuf:"bytes,2,opt,name=new_path,json=newPath,proto3" json:"new_path,omitempty"`
1570	// Status tells what happened to the file.
1571	Status FileStatus `protobuf:"varint,3,opt,name=status,proto3,enum=ermite.FileStatus" json:"status,omitempty"`
1572	// OldMode is the Git file mode before the commit, or 0 for an added file.
1573	OldMode uint32 `protobuf:"varint,4,opt,name=old_mode,json=oldMode,proto3" json:"old_mode,omitempty"`
1574	// NewMode is the Git file mode after the commit, or 0 for a deleted file.
1575	NewMode uint32 `protobuf:"varint,5,opt,name=new_mode,json=newMode,proto3" json:"new_mode,omitempty"`
1576	// OldId is the blob id before the commit. Empty for an added file.
1577	OldId string `protobuf:"bytes,6,opt,name=old_id,json=oldId,proto3" json:"old_id,omitempty"`
1578	// NewId is the blob id after the commit. Empty for a deleted file.
1579	NewId string `protobuf:"bytes,7,opt,name=new_id,json=newId,proto3" json:"new_id,omitempty"`
1580	// Binary is true if Git treats the file as binary (numstat reports "-"). A
1581	// binary file has no hunks and additions and deletions are 0.
1582	Binary bool `protobuf:"varint,8,opt,name=binary,proto3" json:"binary,omitempty"`
1583	// Additions is the number of added lines.
1584	Additions int32 `protobuf:"varint,9,opt,name=additions,proto3" json:"additions,omitempty"`
1585	// Deletions is the number of deleted lines.
1586	Deletions int32 `protobuf:"varint,10,opt,name=deletions,proto3" json:"deletions,omitempty"`
1587	// Similarity is the percentage (0-100) of unchanged content for a renamed or
1588	// copied file, and 0 otherwise.
1589	Similarity int32 `protobuf:"varint,11,opt,name=similarity,proto3" json:"similarity,omitempty"`
1590	// Truncated is true when the file exceeded a diff limit: hunks is then empty
1591	// although the file changed. Additions and deletions remain accurate. It is
1592	// kept for compatibility and equals omitted != FILE_OMISSION_UNSPECIFIED.
1593	Truncated bool `protobuf:"varint,12,opt,name=truncated,proto3" json:"truncated,omitempty"`
1594	// Hunks are the changed regions, in file order. Empty for a binary file, a
1595	// truncated file, a pure rename and a mode-only change.
1596	Hunks []*Hunk `protobuf:"bytes,13,rep,name=hunks,proto3" json:"hunks,omitempty"`
1597	// Omitted tells why hunks is empty although the file changed. truncated is
1598	// true exactly when omitted is not FILE_OMISSION_UNSPECIFIED.
1599	Omitted       FileOmission `protobuf:"varint,14,opt,name=omitted,proto3,enum=ermite.FileOmission" json:"omitted,omitempty"`
1600	unknownFields protoimpl.UnknownFields
1601	sizeCache     protoimpl.SizeCache
1602}
1603
1604func (x *FileDiff) Reset() {
1605	*x = FileDiff{}
1606	mi := &file_ermite_git_proto_msgTypes[17]
1607	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1608	ms.StoreMessageInfo(mi)
1609}
1610
1611func (x *FileDiff) String() string {
1612	return protoimpl.X.MessageStringOf(x)
1613}
1614
1615func (*FileDiff) ProtoMessage() {}
1616
1617func (x *FileDiff) ProtoReflect() protoreflect.Message {
1618	mi := &file_ermite_git_proto_msgTypes[17]
1619	if x != nil {
1620		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1621		if ms.LoadMessageInfo() == nil {
1622			ms.StoreMessageInfo(mi)
1623		}
1624		return ms
1625	}
1626	return mi.MessageOf(x)
1627}
1628
1629// Deprecated: Use FileDiff.ProtoReflect.Descriptor instead.
1630func (*FileDiff) Descriptor() ([]byte, []int) {
1631	return file_ermite_git_proto_rawDescGZIP(), []int{17}
1632}
1633
1634func (x *FileDiff) GetOldPath() string {
1635	if x != nil {
1636		return x.OldPath
1637	}
1638	return ""
1639}
1640
1641func (x *FileDiff) GetNewPath() string {
1642	if x != nil {
1643		return x.NewPath
1644	}
1645	return ""
1646}
1647
1648func (x *FileDiff) GetStatus() FileStatus {
1649	if x != nil {
1650		return x.Status
1651	}
1652	return FileStatus_FILE_STATUS_UNSPECIFIED
1653}
1654
1655func (x *FileDiff) GetOldMode() uint32 {
1656	if x != nil {
1657		return x.OldMode
1658	}
1659	return 0
1660}
1661
1662func (x *FileDiff) GetNewMode() uint32 {
1663	if x != nil {
1664		return x.NewMode
1665	}
1666	return 0
1667}
1668
1669func (x *FileDiff) GetOldId() string {
1670	if x != nil {
1671		return x.OldId
1672	}
1673	return ""
1674}
1675
1676func (x *FileDiff) GetNewId() string {
1677	if x != nil {
1678		return x.NewId
1679	}
1680	return ""
1681}
1682
1683func (x *FileDiff) GetBinary() bool {
1684	if x != nil {
1685		return x.Binary
1686	}
1687	return false
1688}
1689
1690func (x *FileDiff) GetAdditions() int32 {
1691	if x != nil {
1692		return x.Additions
1693	}
1694	return 0
1695}
1696
1697func (x *FileDiff) GetDeletions() int32 {
1698	if x != nil {
1699		return x.Deletions
1700	}
1701	return 0
1702}
1703
1704func (x *FileDiff) GetSimilarity() int32 {
1705	if x != nil {
1706		return x.Similarity
1707	}
1708	return 0
1709}
1710
1711func (x *FileDiff) GetTruncated() bool {
1712	if x != nil {
1713		return x.Truncated
1714	}
1715	return false
1716}
1717
1718func (x *FileDiff) GetHunks() []*Hunk {
1719	if x != nil {
1720		return x.Hunks
1721	}
1722	return nil
1723}
1724
1725func (x *FileDiff) GetOmitted() FileOmission {
1726	if x != nil {
1727		return x.Omitted
1728	}
1729	return FileOmission_FILE_OMISSION_UNSPECIFIED
1730}
1731
1732// Hunk is a contiguous changed region with its context.
1733type Hunk struct {
1734	state protoimpl.MessageState `protogen:"open.v1"`
1735	// OldStart is the 1-based first line of the region in the old file. 0 when
1736	// old_lines is 0 and the file was added.
1737	OldStart int32 `protobuf:"varint,1,opt,name=old_start,json=oldStart,proto3" json:"old_start,omitempty"`
1738	// OldLines is the number of old-side lines in the hunk.
1739	OldLines int32 `protobuf:"varint,2,opt,name=old_lines,json=oldLines,proto3" json:"old_lines,omitempty"`
1740	// NewStart is the 1-based first line of the region in the new file. 0 when
1741	// new_lines is 0 and the file was deleted.
1742	NewStart int32 `protobuf:"varint,3,opt,name=new_start,json=newStart,proto3" json:"new_start,omitempty"`
1743	// NewLines is the number of new-side lines in the hunk.
1744	NewLines int32 `protobuf:"varint,4,opt,name=new_lines,json=newLines,proto3" json:"new_lines,omitempty"`
1745	// Header is the text after the second "@@" of the hunk header, usually the
1746	// enclosing function. It may be empty.
1747	Header string `protobuf:"bytes,5,opt,name=header,proto3" json:"header,omitempty"`
1748	// Lines are the lines of the hunk, in order.
1749	Lines         []*Line `protobuf:"bytes,6,rep,name=lines,proto3" json:"lines,omitempty"`
1750	unknownFields protoimpl.UnknownFields
1751	sizeCache     protoimpl.SizeCache
1752}
1753
1754func (x *Hunk) Reset() {
1755	*x = Hunk{}
1756	mi := &file_ermite_git_proto_msgTypes[18]
1757	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1758	ms.StoreMessageInfo(mi)
1759}
1760
1761func (x *Hunk) String() string {
1762	return protoimpl.X.MessageStringOf(x)
1763}
1764
1765func (*Hunk) ProtoMessage() {}
1766
1767func (x *Hunk) ProtoReflect() protoreflect.Message {
1768	mi := &file_ermite_git_proto_msgTypes[18]
1769	if x != nil {
1770		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1771		if ms.LoadMessageInfo() == nil {
1772			ms.StoreMessageInfo(mi)
1773		}
1774		return ms
1775	}
1776	return mi.MessageOf(x)
1777}
1778
1779// Deprecated: Use Hunk.ProtoReflect.Descriptor instead.
1780func (*Hunk) Descriptor() ([]byte, []int) {
1781	return file_ermite_git_proto_rawDescGZIP(), []int{18}
1782}
1783
1784func (x *Hunk) GetOldStart() int32 {
1785	if x != nil {
1786		return x.OldStart
1787	}
1788	return 0
1789}
1790
1791func (x *Hunk) GetOldLines() int32 {
1792	if x != nil {
1793		return x.OldLines
1794	}
1795	return 0
1796}
1797
1798func (x *Hunk) GetNewStart() int32 {
1799	if x != nil {
1800		return x.NewStart
1801	}
1802	return 0
1803}
1804
1805func (x *Hunk) GetNewLines() int32 {
1806	if x != nil {
1807		return x.NewLines
1808	}
1809	return 0
1810}
1811
1812func (x *Hunk) GetHeader() string {
1813	if x != nil {
1814		return x.Header
1815	}
1816	return ""
1817}
1818
1819func (x *Hunk) GetLines() []*Line {
1820	if x != nil {
1821		return x.Lines
1822	}
1823	return nil
1824}
1825
1826// Line is one line of a hunk.
1827type Line struct {
1828	state protoimpl.MessageState `protogen:"open.v1"`
1829	// Kind tells which side the line belongs to.
1830	Kind LineKind `protobuf:"varint,1,opt,name=kind,proto3,enum=ermite.LineKind" json:"kind,omitempty"`
1831	// OldNumber is the 1-based line number on the old side. 0 for an addition.
1832	OldNumber int32 `protobuf:"varint,2,opt,name=old_number,json=oldNumber,proto3" json:"old_number,omitempty"`
1833	// NewNumber is the 1-based line number on the new side. 0 for a deletion.
1834	NewNumber int32 `protobuf:"varint,3,opt,name=new_number,json=newNumber,proto3" json:"new_number,omitempty"`
1835	// Text is the content without the line terminator. Bytes that are not valid
1836	// UTF-8 are replaced by the replacement character.
1837	Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
1838	// NoNewlineAtEof is true when this is the last line of its side and the file
1839	// does not end with a line break there.
1840	NoNewlineAtEof bool `protobuf:"varint,5,opt,name=no_newline_at_eof,json=noNewlineAtEof,proto3" json:"no_newline_at_eof,omitempty"`
1841	unknownFields  protoimpl.UnknownFields
1842	sizeCache      protoimpl.SizeCache
1843}
1844
1845func (x *Line) Reset() {
1846	*x = Line{}
1847	mi := &file_ermite_git_proto_msgTypes[19]
1848	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1849	ms.StoreMessageInfo(mi)
1850}
1851
1852func (x *Line) String() string {
1853	return protoimpl.X.MessageStringOf(x)
1854}
1855
1856func (*Line) ProtoMessage() {}
1857
1858func (x *Line) ProtoReflect() protoreflect.Message {
1859	mi := &file_ermite_git_proto_msgTypes[19]
1860	if x != nil {
1861		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1862		if ms.LoadMessageInfo() == nil {
1863			ms.StoreMessageInfo(mi)
1864		}
1865		return ms
1866	}
1867	return mi.MessageOf(x)
1868}
1869
1870// Deprecated: Use Line.ProtoReflect.Descriptor instead.
1871func (*Line) Descriptor() ([]byte, []int) {
1872	return file_ermite_git_proto_rawDescGZIP(), []int{19}
1873}
1874
1875func (x *Line) GetKind() LineKind {
1876	if x != nil {
1877		return x.Kind
1878	}
1879	return LineKind_LINE_KIND_UNSPECIFIED
1880}
1881
1882func (x *Line) GetOldNumber() int32 {
1883	if x != nil {
1884		return x.OldNumber
1885	}
1886	return 0
1887}
1888
1889func (x *Line) GetNewNumber() int32 {
1890	if x != nil {
1891		return x.NewNumber
1892	}
1893	return 0
1894}
1895
1896func (x *Line) GetText() string {
1897	if x != nil {
1898		return x.Text
1899	}
1900	return ""
1901}
1902
1903func (x *Line) GetNoNewlineAtEof() bool {
1904	if x != nil {
1905		return x.NoNewlineAtEof
1906	}
1907	return false
1908}
1909
1910// ResolveRevisionRequest names a revision.
1911type ResolveRevisionRequest struct {
1912	state protoimpl.MessageState `protogen:"open.v1"`
1913	// Repo is the repository name.
1914	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1915	// Revision is a branch, a tag or a commit id. Empty means HEAD.
1916	Revision      string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
1917	unknownFields protoimpl.UnknownFields
1918	sizeCache     protoimpl.SizeCache
1919}
1920
1921func (x *ResolveRevisionRequest) Reset() {
1922	*x = ResolveRevisionRequest{}
1923	mi := &file_ermite_git_proto_msgTypes[20]
1924	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1925	ms.StoreMessageInfo(mi)
1926}
1927
1928func (x *ResolveRevisionRequest) String() string {
1929	return protoimpl.X.MessageStringOf(x)
1930}
1931
1932func (*ResolveRevisionRequest) ProtoMessage() {}
1933
1934func (x *ResolveRevisionRequest) ProtoReflect() protoreflect.Message {
1935	mi := &file_ermite_git_proto_msgTypes[20]
1936	if x != nil {
1937		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1938		if ms.LoadMessageInfo() == nil {
1939			ms.StoreMessageInfo(mi)
1940		}
1941		return ms
1942	}
1943	return mi.MessageOf(x)
1944}
1945
1946// Deprecated: Use ResolveRevisionRequest.ProtoReflect.Descriptor instead.
1947func (*ResolveRevisionRequest) Descriptor() ([]byte, []int) {
1948	return file_ermite_git_proto_rawDescGZIP(), []int{20}
1949}
1950
1951func (x *ResolveRevisionRequest) GetRepo() string {
1952	if x != nil {
1953		return x.Repo
1954	}
1955	return ""
1956}
1957
1958func (x *ResolveRevisionRequest) GetRevision() string {
1959	if x != nil {
1960		return x.Revision
1961	}
1962	return ""
1963}
1964
1965// ResolveRevisionResponse holds the resolved commit.
1966type ResolveRevisionResponse struct {
1967	state protoimpl.MessageState `protogen:"open.v1"`
1968	// CommitId is the full id of the commit the revision designates, after
1969	// following annotated tags.
1970	CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
1971	// Ref is the full name of the ref the revision matched, for example
1972	// "refs/heads/main". Empty when the revision was a commit id or for HEAD
1973	// when it is resolved by default.
1974	Ref           string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"`
1975	unknownFields protoimpl.UnknownFields
1976	sizeCache     protoimpl.SizeCache
1977}
1978
1979func (x *ResolveRevisionResponse) Reset() {
1980	*x = ResolveRevisionResponse{}
1981	mi := &file_ermite_git_proto_msgTypes[21]
1982	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1983	ms.StoreMessageInfo(mi)
1984}
1985
1986func (x *ResolveRevisionResponse) String() string {
1987	return protoimpl.X.MessageStringOf(x)
1988}
1989
1990func (*ResolveRevisionResponse) ProtoMessage() {}
1991
1992func (x *ResolveRevisionResponse) ProtoReflect() protoreflect.Message {
1993	mi := &file_ermite_git_proto_msgTypes[21]
1994	if x != nil {
1995		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1996		if ms.LoadMessageInfo() == nil {
1997			ms.StoreMessageInfo(mi)
1998		}
1999		return ms
2000	}
2001	return mi.MessageOf(x)
2002}
2003
2004// Deprecated: Use ResolveRevisionResponse.ProtoReflect.Descriptor instead.
2005func (*ResolveRevisionResponse) Descriptor() ([]byte, []int) {
2006	return file_ermite_git_proto_rawDescGZIP(), []int{21}
2007}
2008
2009func (x *ResolveRevisionResponse) GetCommitId() string {
2010	if x != nil {
2011		return x.CommitId
2012	}
2013	return ""
2014}
2015
2016func (x *ResolveRevisionResponse) GetRef() string {
2017	if x != nil {
2018		return x.Ref
2019	}
2020	return ""
2021}
2022
2023var File_ermite_git_proto protoreflect.FileDescriptor
2024
2025const file_ermite_git_proto_rawDesc = "" +
2026	"\n" +
2027	"\x10ermite/git.proto\x12\x06ermite\x1a\x12ermite/types.proto\"\x8a\x01\n" +
2028	"\x03Ref\x12\x12\n" +
2029	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n" +
2030	"\n" +
2031	"short_name\x18\x02 \x01(\tR\tshortName\x12#\n" +
2032	"\x04kind\x18\x03 \x01(\x0e2\x0f.ermite.RefKindR\x04kind\x12\x0e\n" +
2033	"\x02id\x18\x04 \x01(\tR\x02id\x12\x1b\n" +
2034	"\tcommit_id\x18\x05 \x01(\tR\bcommitId\"\x88\x01\n" +
2035	"\x0fListRefsRequest\x12\x12\n" +
2036	"\x04repo\x18\x01 \x01(\tR\x04repo\x12%\n" +
2037	"\x05kinds\x18\x02 \x03(\x0e2\x0f.ermite.RefKindR\x05kinds\x12\x1b\n" +
2038	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" +
2039	"\n" +
2040	"page_token\x18\x04 \x01(\tR\tpageToken\"[\n" +
2041	"\x10ListRefsResponse\x12\x1f\n" +
2042	"\x04refs\x18\x01 \x03(\v2\v.ermite.RefR\x04refs\x12&\n" +
2043	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\xc3\x01\n" +
2044	"\tTreeEntry\x12\x12\n" +
2045	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
2046	"\x04path\x18\x02 \x01(\tR\x04path\x12%\n" +
2047	"\x04kind\x18\x03 \x01(\x0e2\x11.ermite.EntryKindR\x04kind\x12\x12\n" +
2048	"\x04mode\x18\x04 \x01(\rR\x04mode\x12\x0e\n" +
2049	"\x02id\x18\x05 \x01(\tR\x02id\x12\x12\n" +
2050	"\x04size\x18\x06 \x01(\x03R\x04size\x12/\n" +
2051	"\vlast_commit\x18\a \x01(\v2\x0e.ermite.CommitR\n" +
2052	"lastCommit\"\x84\x01\n" +
2053	"\x0eGetTreeRequest\x12\x12\n" +
2054	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1a\n" +
2055	"\brevision\x18\x02 \x01(\tR\brevision\x12\x12\n" +
2056	"\x04path\x18\x03 \x01(\tR\x04path\x12.\n" +
2057	"\x13include_last_commit\x18\x04 \x01(\bR\x11includeLastCommit\"\xc8\x01\n" +
2058	"\x0fGetTreeResponse\x12\x1b\n" +
2059	"\tcommit_id\x18\x01 \x01(\tR\bcommitId\x12\x17\n" +
2060	"\atree_id\x18\x02 \x01(\tR\x06treeId\x12+\n" +
2061	"\aentries\x18\x03 \x03(\v2\x11.ermite.TreeEntryR\aentries\x124\n" +
2062	"\x16last_commits_truncated\x18\x04 \x01(\bR\x14lastCommitsTruncated\x12\x1c\n" +
2063	"\ttruncated\x18\x05 \x01(\bR\ttruncated\"B\n" +
2064	"\x10ListPathsRequest\x12\x12\n" +
2065	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1a\n" +
2066	"\brevision\x18\x02 \x01(\tR\brevision\"}\n" +
2067	"\x11ListPathsResponse\x12\x1b\n" +
2068	"\tcommit_id\x18\x01 \x01(\tR\bcommitId\x12\x17\n" +
2069	"\atree_id\x18\x02 \x01(\tR\x06treeId\x12\x14\n" +
2070	"\x05paths\x18\x03 \x03(\tR\x05paths\x12\x1c\n" +
2071	"\ttruncated\x18\x04 \x01(\bR\ttruncated\"\x8d\x01\n" +
2072	"\bBlobInfo\x12\x0e\n" +
2073	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2074	"\x04path\x18\x02 \x01(\tR\x04path\x12\x12\n" +
2075	"\x04size\x18\x03 \x01(\x03R\x04size\x12\x16\n" +
2076	"\x06binary\x18\x04 \x01(\bR\x06binary\x12\x1d\n" +
2077	"\n" +
2078	"media_type\x18\x05 \x01(\tR\tmediaType\x12\x12\n" +
2079	"\x04mode\x18\x06 \x01(\rR\x04mode\"T\n" +
2080	"\x0eGetBlobRequest\x12\x12\n" +
2081	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1a\n" +
2082	"\brevision\x18\x02 \x01(\tR\brevision\x12\x12\n" +
2083	"\x04path\x18\x03 \x01(\tR\x04path\"M\n" +
2084	"\x0fGetBlobResponse\x12$\n" +
2085	"\x04info\x18\x01 \x01(\v2\x10.ermite.BlobInfoR\x04info\x12\x14\n" +
2086	"\x05chunk\x18\x02 \x01(\fR\x05chunk\"\x94\x01\n" +
2087	"\x12ListCommitsRequest\x12\x12\n" +
2088	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1a\n" +
2089	"\brevision\x18\x02 \x01(\tR\brevision\x12\x12\n" +
2090	"\x04path\x18\x03 \x01(\tR\x04path\x12\x1b\n" +
2091	"\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" +
2092	"\n" +
2093	"page_token\x18\x05 \x01(\tR\tpageToken\"g\n" +
2094	"\x13ListCommitsResponse\x12(\n" +
2095	"\acommits\x18\x01 \x03(\v2\x0e.ermite.CommitR\acommits\x12&\n" +
2096	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"B\n" +
2097	"\x10GetCommitRequest\x12\x12\n" +
2098	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1a\n" +
2099	"\brevision\x18\x02 \x01(\tR\brevision\"\x86\x01\n" +
2100	"\x11GetCommitResponse\x12&\n" +
2101	"\x06commit\x18\x01 \x01(\v2\x0e.ermite.CommitR\x06commit\x12'\n" +
2102	"\x05stats\x18\x02 \x01(\v2\x11.ermite.DiffStatsR\x05stats\x12 \n" +
2103	"\x04diff\x18\x03 \x01(\v2\f.ermite.DiffR\x04diff\"l\n" +
2104	"\tDiffStats\x12#\n" +
2105	"\rfiles_changed\x18\x01 \x01(\x05R\ffilesChanged\x12\x1c\n" +
2106	"\tadditions\x18\x02 \x01(\x05R\tadditions\x12\x1c\n" +
2107	"\tdeletions\x18\x03 \x01(\x05R\tdeletions\"L\n" +
2108	"\x04Diff\x12&\n" +
2109	"\x05files\x18\x01 \x03(\v2\x10.ermite.FileDiffR\x05files\x12\x1c\n" +
2110	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"\xb6\x03\n" +
2111	"\bFileDiff\x12\x19\n" +
2112	"\bold_path\x18\x01 \x01(\tR\aoldPath\x12\x19\n" +
2113	"\bnew_path\x18\x02 \x01(\tR\anewPath\x12*\n" +
2114	"\x06status\x18\x03 \x01(\x0e2\x12.ermite.FileStatusR\x06status\x12\x19\n" +
2115	"\bold_mode\x18\x04 \x01(\rR\aoldMode\x12\x19\n" +
2116	"\bnew_mode\x18\x05 \x01(\rR\anewMode\x12\x15\n" +
2117	"\x06old_id\x18\x06 \x01(\tR\x05oldId\x12\x15\n" +
2118	"\x06new_id\x18\a \x01(\tR\x05newId\x12\x16\n" +
2119	"\x06binary\x18\b \x01(\bR\x06binary\x12\x1c\n" +
2120	"\tadditions\x18\t \x01(\x05R\tadditions\x12\x1c\n" +
2121	"\tdeletions\x18\n" +
2122	" \x01(\x05R\tdeletions\x12\x1e\n" +
2123	"\n" +
2124	"similarity\x18\v \x01(\x05R\n" +
2125	"similarity\x12\x1c\n" +
2126	"\ttruncated\x18\f \x01(\bR\ttruncated\x12\"\n" +
2127	"\x05hunks\x18\r \x03(\v2\f.ermite.HunkR\x05hunks\x12.\n" +
2128	"\aomitted\x18\x0e \x01(\x0e2\x14.ermite.FileOmissionR\aomitted\"\xb6\x01\n" +
2129	"\x04Hunk\x12\x1b\n" +
2130	"\told_start\x18\x01 \x01(\x05R\boldStart\x12\x1b\n" +
2131	"\told_lines\x18\x02 \x01(\x05R\boldLines\x12\x1b\n" +
2132	"\tnew_start\x18\x03 \x01(\x05R\bnewStart\x12\x1b\n" +
2133	"\tnew_lines\x18\x04 \x01(\x05R\bnewLines\x12\x16\n" +
2134	"\x06header\x18\x05 \x01(\tR\x06header\x12\"\n" +
2135	"\x05lines\x18\x06 \x03(\v2\f.ermite.LineR\x05lines\"\xa9\x01\n" +
2136	"\x04Line\x12$\n" +
2137	"\x04kind\x18\x01 \x01(\x0e2\x10.ermite.LineKindR\x04kind\x12\x1d\n" +
2138	"\n" +
2139	"old_number\x18\x02 \x01(\x05R\toldNumber\x12\x1d\n" +
2140	"\n" +
2141	"new_number\x18\x03 \x01(\x05R\tnewNumber\x12\x12\n" +
2142	"\x04text\x18\x04 \x01(\tR\x04text\x12)\n" +
2143	"\x11no_newline_at_eof\x18\x05 \x01(\bR\x0enoNewlineAtEof\"H\n" +
2144	"\x16ResolveRevisionRequest\x12\x12\n" +
2145	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1a\n" +
2146	"\brevision\x18\x02 \x01(\tR\brevision\"H\n" +
2147	"\x17ResolveRevisionResponse\x12\x1b\n" +
2148	"\tcommit_id\x18\x01 \x01(\tR\bcommitId\x12\x10\n" +
2149	"\x03ref\x18\x02 \x01(\tR\x03ref*]\n" +
2150	"\aRefKind\x12\x18\n" +
2151	"\x14REF_KIND_UNSPECIFIED\x10\x00\x12\x13\n" +
2152	"\x0fREF_KIND_BRANCH\x10\x01\x12\x10\n" +
2153	"\fREF_KIND_TAG\x10\x02\x12\x11\n" +
2154	"\rREF_KIND_HEAD\x10\x03*\xa3\x01\n" +
2155	"\tEntryKind\x12\x1a\n" +
2156	"\x16ENTRY_KIND_UNSPECIFIED\x10\x00\x12\x13\n" +
2157	"\x0fENTRY_KIND_FILE\x10\x01\x12\x19\n" +
2158	"\x15ENTRY_KIND_EXECUTABLE\x10\x02\x12\x18\n" +
2159	"\x14ENTRY_KIND_DIRECTORY\x10\x03\x12\x16\n" +
2160	"\x12ENTRY_KIND_SYMLINK\x10\x04\x12\x18\n" +
2161	"\x14ENTRY_KIND_SUBMODULE\x10\x05*\xc2\x01\n" +
2162	"\n" +
2163	"FileStatus\x12\x1b\n" +
2164	"\x17FILE_STATUS_UNSPECIFIED\x10\x00\x12\x15\n" +
2165	"\x11FILE_STATUS_ADDED\x10\x01\x12\x17\n" +
2166	"\x13FILE_STATUS_DELETED\x10\x02\x12\x18\n" +
2167	"\x14FILE_STATUS_MODIFIED\x10\x03\x12\x17\n" +
2168	"\x13FILE_STATUS_RENAMED\x10\x04\x12\x16\n" +
2169	"\x12FILE_STATUS_COPIED\x10\x05\x12\x1c\n" +
2170	"\x18FILE_STATUS_TYPE_CHANGED\x10\x06*\x9c\x01\n" +
2171	"\fFileOmission\x12\x1d\n" +
2172	"\x19FILE_OMISSION_UNSPECIFIED\x10\x00\x12\x1b\n" +
2173	"\x17FILE_OMISSION_GENERATED\x10\x01\x12\x17\n" +
2174	"\x13FILE_OMISSION_LARGE\x10\x02\x12\x18\n" +
2175	"\x14FILE_OMISSION_BUDGET\x10\x03\x12\x1d\n" +
2176	"\x19FILE_OMISSION_UNAVAILABLE\x10\x04*l\n" +
2177	"\bLineKind\x12\x19\n" +
2178	"\x15LINE_KIND_UNSPECIFIED\x10\x00\x12\x15\n" +
2179	"\x11LINE_KIND_CONTEXT\x10\x01\x12\x16\n" +
2180	"\x12LINE_KIND_ADDITION\x10\x02\x12\x16\n" +
2181	"\x12LINE_KIND_DELETION\x10\x032\xe5\x03\n" +
2182	"\n" +
2183	"GitService\x12=\n" +
2184	"\bListRefs\x12\x17.ermite.ListRefsRequest\x1a\x18.ermite.ListRefsResponse\x12:\n" +
2185	"\aGetTree\x12\x16.ermite.GetTreeRequest\x1a\x17.ermite.GetTreeResponse\x12@\n" +
2186	"\tListPaths\x12\x18.ermite.ListPathsRequest\x1a\x19.ermite.ListPathsResponse\x12<\n" +
2187	"\aGetBlob\x12\x16.ermite.GetBlobRequest\x1a\x17.ermite.GetBlobResponse0\x01\x12F\n" +
2188	"\vListCommits\x12\x1a.ermite.ListCommitsRequest\x1a\x1b.ermite.ListCommitsResponse\x12@\n" +
2189	"\tGetCommit\x12\x18.ermite.GetCommitRequest\x1a\x19.ermite.GetCommitResponse\x12R\n" +
2190	"\x0fResolveRevision\x12\x1e.ermite.ResolveRevisionRequest\x1a\x1f.ermite.ResolveRevisionResponseBo\n" +
2191	"\n" +
2192	"com.ermiteB\bGitProtoP\x01Z\x1fbnema.dev/ermite-api/gen/ermite\xa2\x02\x03EXX\xaa\x02\x06Ermite\xca\x02\x06Ermite\xe2\x02\x12Ermite\\GPBMetadata\xea\x02\x06Ermiteb\x06proto3"
2193
2194var (
2195	file_ermite_git_proto_rawDescOnce sync.Once
2196	file_ermite_git_proto_rawDescData []byte
2197)
2198
2199func file_ermite_git_proto_rawDescGZIP() []byte {
2200	file_ermite_git_proto_rawDescOnce.Do(func() {
2201		file_ermite_git_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_git_proto_rawDesc), len(file_ermite_git_proto_rawDesc)))
2202	})
2203	return file_ermite_git_proto_rawDescData
2204}
2205
2206var file_ermite_git_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
2207var file_ermite_git_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
2208var file_ermite_git_proto_goTypes = []any{
2209	(RefKind)(0),                    // 0: ermite.RefKind
2210	(EntryKind)(0),                  // 1: ermite.EntryKind
2211	(FileStatus)(0),                 // 2: ermite.FileStatus
2212	(FileOmission)(0),               // 3: ermite.FileOmission
2213	(LineKind)(0),                   // 4: ermite.LineKind
2214	(*Ref)(nil),                     // 5: ermite.Ref
2215	(*ListRefsRequest)(nil),         // 6: ermite.ListRefsRequest
2216	(*ListRefsResponse)(nil),        // 7: ermite.ListRefsResponse
2217	(*TreeEntry)(nil),               // 8: ermite.TreeEntry
2218	(*GetTreeRequest)(nil),          // 9: ermite.GetTreeRequest
2219	(*GetTreeResponse)(nil),         // 10: ermite.GetTreeResponse
2220	(*ListPathsRequest)(nil),        // 11: ermite.ListPathsRequest
2221	(*ListPathsResponse)(nil),       // 12: ermite.ListPathsResponse
2222	(*BlobInfo)(nil),                // 13: ermite.BlobInfo
2223	(*GetBlobRequest)(nil),          // 14: ermite.GetBlobRequest
2224	(*GetBlobResponse)(nil),         // 15: ermite.GetBlobResponse
2225	(*ListCommitsRequest)(nil),      // 16: ermite.ListCommitsRequest
2226	(*ListCommitsResponse)(nil),     // 17: ermite.ListCommitsResponse
2227	(*GetCommitRequest)(nil),        // 18: ermite.GetCommitRequest
2228	(*GetCommitResponse)(nil),       // 19: ermite.GetCommitResponse
2229	(*DiffStats)(nil),               // 20: ermite.DiffStats
2230	(*Diff)(nil),                    // 21: ermite.Diff
2231	(*FileDiff)(nil),                // 22: ermite.FileDiff
2232	(*Hunk)(nil),                    // 23: ermite.Hunk
2233	(*Line)(nil),                    // 24: ermite.Line
2234	(*ResolveRevisionRequest)(nil),  // 25: ermite.ResolveRevisionRequest
2235	(*ResolveRevisionResponse)(nil), // 26: ermite.ResolveRevisionResponse
2236	(*Commit)(nil),                  // 27: ermite.Commit
2237}
2238var file_ermite_git_proto_depIdxs = []int32{
2239	0,  // 0: ermite.Ref.kind:type_name -> ermite.RefKind
2240	0,  // 1: ermite.ListRefsRequest.kinds:type_name -> ermite.RefKind
2241	5,  // 2: ermite.ListRefsResponse.refs:type_name -> ermite.Ref
2242	1,  // 3: ermite.TreeEntry.kind:type_name -> ermite.EntryKind
2243	27, // 4: ermite.TreeEntry.last_commit:type_name -> ermite.Commit
2244	8,  // 5: ermite.GetTreeResponse.entries:type_name -> ermite.TreeEntry
2245	13, // 6: ermite.GetBlobResponse.info:type_name -> ermite.BlobInfo
2246	27, // 7: ermite.ListCommitsResponse.commits:type_name -> ermite.Commit
2247	27, // 8: ermite.GetCommitResponse.commit:type_name -> ermite.Commit
2248	20, // 9: ermite.GetCommitResponse.stats:type_name -> ermite.DiffStats
2249	21, // 10: ermite.GetCommitResponse.diff:type_name -> ermite.Diff
2250	22, // 11: ermite.Diff.files:type_name -> ermite.FileDiff
2251	2,  // 12: ermite.FileDiff.status:type_name -> ermite.FileStatus
2252	23, // 13: ermite.FileDiff.hunks:type_name -> ermite.Hunk
2253	3,  // 14: ermite.FileDiff.omitted:type_name -> ermite.FileOmission
2254	24, // 15: ermite.Hunk.lines:type_name -> ermite.Line
2255	4,  // 16: ermite.Line.kind:type_name -> ermite.LineKind
2256	6,  // 17: ermite.GitService.ListRefs:input_type -> ermite.ListRefsRequest
2257	9,  // 18: ermite.GitService.GetTree:input_type -> ermite.GetTreeRequest
2258	11, // 19: ermite.GitService.ListPaths:input_type -> ermite.ListPathsRequest
2259	14, // 20: ermite.GitService.GetBlob:input_type -> ermite.GetBlobRequest
2260	16, // 21: ermite.GitService.ListCommits:input_type -> ermite.ListCommitsRequest
2261	18, // 22: ermite.GitService.GetCommit:input_type -> ermite.GetCommitRequest
2262	25, // 23: ermite.GitService.ResolveRevision:input_type -> ermite.ResolveRevisionRequest
2263	7,  // 24: ermite.GitService.ListRefs:output_type -> ermite.ListRefsResponse
2264	10, // 25: ermite.GitService.GetTree:output_type -> ermite.GetTreeResponse
2265	12, // 26: ermite.GitService.ListPaths:output_type -> ermite.ListPathsResponse
2266	15, // 27: ermite.GitService.GetBlob:output_type -> ermite.GetBlobResponse
2267	17, // 28: ermite.GitService.ListCommits:output_type -> ermite.ListCommitsResponse
2268	19, // 29: ermite.GitService.GetCommit:output_type -> ermite.GetCommitResponse
2269	26, // 30: ermite.GitService.ResolveRevision:output_type -> ermite.ResolveRevisionResponse
2270	24, // [24:31] is the sub-list for method output_type
2271	17, // [17:24] is the sub-list for method input_type
2272	17, // [17:17] is the sub-list for extension type_name
2273	17, // [17:17] is the sub-list for extension extendee
2274	0,  // [0:17] is the sub-list for field type_name
2275}
2276
2277func init() { file_ermite_git_proto_init() }
2278func file_ermite_git_proto_init() {
2279	if File_ermite_git_proto != nil {
2280		return
2281	}
2282	file_ermite_types_proto_init()
2283	type x struct{}
2284	out := protoimpl.TypeBuilder{
2285		File: protoimpl.DescBuilder{
2286			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2287			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_git_proto_rawDesc), len(file_ermite_git_proto_rawDesc)),
2288			NumEnums:      5,
2289			NumMessages:   22,
2290			NumExtensions: 0,
2291			NumServices:   1,
2292		},
2293		GoTypes:           file_ermite_git_proto_goTypes,
2294		DependencyIndexes: file_ermite_git_proto_depIdxs,
2295		EnumInfos:         file_ermite_git_proto_enumTypes,
2296		MessageInfos:      file_ermite_git_proto_msgTypes,
2297	}.Build()
2298	File_ermite_git_proto = out.File
2299	file_ermite_git_proto_goTypes = nil
2300	file_ermite_git_proto_depIdxs = nil
2301}

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