diff options
author | Pavlo Strokov <pstrokov@gitlab.com> | 2022-01-18 13:39:33 +0300 |
---|---|---|
committer | Pavlo Strokov <pstrokov@gitlab.com> | 2022-01-18 13:39:33 +0300 |
commit | 62920dd355e2b81e4e2412a4744c8482df112711 (patch) | |
tree | 8b1b085e32c23349a36c420251689a25ec5c647e | |
parent | aeec715ba288df3d9cd94e20aa6b9cf9f2fe2af2 (diff) | |
parent | e1c29d571ea1db571681f865c42fd795a2c97b3b (diff) |
Merge branch 'ps-sort-list-ref' into 'master'
ref: Sort results of ListRefs
Closes #3855
See merge request gitlab-org/gitaly!4221
-rw-r--r-- | internal/gitaly/service/ref/list_refs.go | 27 | ||||
-rw-r--r-- | internal/gitaly/service/ref/list_refs_test.go | 48 | ||||
-rw-r--r-- | proto/go/gitalypb/ref.pb.go | 708 | ||||
-rw-r--r-- | proto/ref.proto | 16 | ||||
-rw-r--r-- | ruby/proto/gitaly/ref_pb.rb | 13 |
5 files changed, 532 insertions, 280 deletions
diff --git a/internal/gitaly/service/ref/list_refs.go b/internal/gitaly/service/ref/list_refs.go index f5eb03557..0ad61e508 100644 --- a/internal/gitaly/service/ref/list_refs.go +++ b/internal/gitaly/service/ref/list_refs.go @@ -2,6 +2,7 @@ package ref import ( "errors" + "fmt" "strings" "gitlab.com/gitlab-org/gitaly/v14/internal/git" @@ -34,10 +35,12 @@ func (s *server) ListRefs(in *gitalypb.ListRefsRequest, stream gitalypb.RefServi patterns = append(patterns, string(pattern)) } + sorting := sortDirectionByEnum[in.GetSortBy().GetDirection()] + sortKeyByEnum[in.GetSortBy().GetKey()] opts := buildFindRefsOpts(ctx, nil) opts.cmdArgs = []git.Option{ // %00 inserts the null character into the output (see for-each-ref docs) - git.Flag{Name: "--format=" + strings.Join(localBranchFormatFields, "%00")}, + git.ValueFlag{Name: "--format", Value: strings.Join(localBranchFormatFields, "%00")}, + git.ValueFlag{Name: "--sort", Value: sorting}, } return s.findRefs(ctx, writer, repo, patterns, opts) @@ -51,6 +54,16 @@ func validateListRefsRequest(in *gitalypb.ListRefsRequest) error { return errors.New("patterns must have at least one entry") } + if sortBy := in.GetSortBy(); sortBy != nil { + if _, found := sortKeyByEnum[sortBy.GetKey()]; !found { + return fmt.Errorf("sorting key %q is not supported", sortBy.GetKey()) + } + + if _, found := sortDirectionByEnum[sortBy.GetDirection()]; !found { + return errors.New("sorting direction is not supported") + } + } + return nil } @@ -81,3 +94,15 @@ func newListRefsWriter(stream gitalypb.RefService_ListRefsServer, headOID git.Ob return stream.Send(&gitalypb.ListRefsResponse{References: refNames}) } } + +var sortKeyByEnum = map[gitalypb.ListRefsRequest_SortBy_Key]string{ + gitalypb.ListRefsRequest_SortBy_REFNAME: "refname", + gitalypb.ListRefsRequest_SortBy_CREATORDATE: "creatordate", + gitalypb.ListRefsRequest_SortBy_AUTHORDATE: "authordate", + gitalypb.ListRefsRequest_SortBy_COMMITTERDATE: "committerdate", +} + +var sortDirectionByEnum = map[gitalypb.SortDirection]string{ + gitalypb.SortDirection_ASCENDING: "", + gitalypb.SortDirection_DESCENDING: "-", +} diff --git a/internal/gitaly/service/ref/list_refs_test.go b/internal/gitaly/service/ref/list_refs_test.go index 9b9529baa..2f662729b 100644 --- a/internal/gitaly/service/ref/list_refs_test.go +++ b/internal/gitaly/service/ref/list_refs_test.go @@ -26,7 +26,11 @@ func TestServer_ListRefs(t *testing.T) { repoPath := filepath.Join(storagePath, relativePath) gittest.Exec(t, cfg, "init", repoPath) + gittest.Exec(t, cfg, "-C", repoPath, "commit", "--allow-empty", "-m", "initial") + oldCommit := text.ChompBytes(gittest.Exec(t, cfg, "-C", repoPath, "rev-parse", "refs/heads/master")) + gittest.Exec(t, cfg, "-C", repoPath, "commit", "--allow-empty", "-m", "commit message") + gittest.Exec(t, cfg, "-C", repoPath, "commit", "--amend", "--date", "Wed Feb 16 14:01 2011 +0100", "--allow-empty", "--no-edit") commit := text.ChompBytes(gittest.Exec(t, cfg, "-C", repoPath, "rev-parse", "refs/heads/master")) for _, cmd := range [][]string{ @@ -36,6 +40,7 @@ func TestServer_ListRefs(t *testing.T) { {"symbolic-ref", "refs/heads/symbolic", "refs/heads/master"}, {"update-ref", "refs/remote/remote-name/remote-branch", commit}, {"symbolic-ref", "HEAD", "refs/heads/master"}, + {"update-ref", "refs/heads/old", oldCommit}, } { gittest.Exec(t, cfg, append([]string{"-C", repoPath}, cmd...)...) } @@ -68,6 +73,30 @@ func TestServer_ListRefs(t *testing.T) { expectedError: "rpc error: code = InvalidArgument desc = patterns must have at least one entry", }, { + desc: "bad sorting key", + request: &gitalypb.ListRefsRequest{ + Repository: repo, + Patterns: [][]byte{[]byte("refs/")}, + SortBy: &gitalypb.ListRefsRequest_SortBy{ + Key: gitalypb.ListRefsRequest_SortBy_Key(100), + }, + }, + expectedGrpcError: codes.InvalidArgument, + expectedError: `rpc error: code = InvalidArgument desc = sorting key "100" is not supported`, + }, + { + desc: "bad sorting direction", + request: &gitalypb.ListRefsRequest{ + Repository: repo, + Patterns: [][]byte{[]byte("refs/")}, + SortBy: &gitalypb.ListRefsRequest_SortBy{ + Direction: gitalypb.SortDirection(100), + }, + }, + expectedGrpcError: codes.InvalidArgument, + expectedError: "rpc error: code = InvalidArgument desc = sorting direction is not supported", + }, + { desc: "not found", request: &gitalypb.ListRefsRequest{ Repository: repo, @@ -95,6 +124,7 @@ func TestServer_ListRefs(t *testing.T) { }, expected: []*gitalypb.ListRefsResponse_Reference{ {Name: []byte("refs/heads/master"), Target: commit}, + {Name: []byte("refs/heads/old"), Target: oldCommit}, {Name: []byte("refs/heads/symbolic"), Target: commit}, {Name: []byte("refs/remote/remote-name/remote-branch"), Target: commit}, {Name: []byte("refs/tags/annotated-tag"), Target: annotatedTagOID}, @@ -102,6 +132,22 @@ func TestServer_ListRefs(t *testing.T) { }, }, { + desc: "sort by authordate desc", + request: &gitalypb.ListRefsRequest{ + Repository: repo, + Patterns: [][]byte{[]byte("refs/heads")}, + SortBy: &gitalypb.ListRefsRequest_SortBy{ + Direction: gitalypb.SortDirection_DESCENDING, + Key: gitalypb.ListRefsRequest_SortBy_AUTHORDATE, + }, + }, + expected: []*gitalypb.ListRefsResponse_Reference{ + {Name: []byte("refs/heads/old"), Target: oldCommit}, + {Name: []byte("refs/heads/master"), Target: commit}, + {Name: []byte("refs/heads/symbolic"), Target: commit}, + }, + }, + { desc: "branches and tags only", request: &gitalypb.ListRefsRequest{ Repository: repo, @@ -109,6 +155,7 @@ func TestServer_ListRefs(t *testing.T) { }, expected: []*gitalypb.ListRefsResponse_Reference{ {Name: []byte("refs/heads/master"), Target: commit}, + {Name: []byte("refs/heads/old"), Target: oldCommit}, {Name: []byte("refs/heads/symbolic"), Target: commit}, {Name: []byte("refs/tags/annotated-tag"), Target: annotatedTagOID}, {Name: []byte("refs/tags/lightweight-tag"), Target: commit}, @@ -124,6 +171,7 @@ func TestServer_ListRefs(t *testing.T) { expected: []*gitalypb.ListRefsResponse_Reference{ {Name: []byte("HEAD"), Target: commit}, {Name: []byte("refs/heads/master"), Target: commit}, + {Name: []byte("refs/heads/old"), Target: oldCommit}, {Name: []byte("refs/heads/symbolic"), Target: commit}, {Name: []byte("refs/tags/annotated-tag"), Target: annotatedTagOID}, {Name: []byte("refs/tags/lightweight-tag"), Target: commit}, diff --git a/proto/go/gitalypb/ref.pb.go b/proto/go/gitalypb/ref.pb.go index f8ff1dd42..603e2e356 100644 --- a/proto/go/gitalypb/ref.pb.go +++ b/proto/go/gitalypb/ref.pb.go @@ -169,6 +169,58 @@ func (CreateBranchResponse_Status) EnumDescriptor() ([]byte, []int) { return file_ref_proto_rawDescGZIP(), []int{19, 0} } +type ListRefsRequest_SortBy_Key int32 + +const ( + ListRefsRequest_SortBy_REFNAME ListRefsRequest_SortBy_Key = 0 + ListRefsRequest_SortBy_CREATORDATE ListRefsRequest_SortBy_Key = 1 + ListRefsRequest_SortBy_AUTHORDATE ListRefsRequest_SortBy_Key = 2 + ListRefsRequest_SortBy_COMMITTERDATE ListRefsRequest_SortBy_Key = 3 +) + +// Enum value maps for ListRefsRequest_SortBy_Key. +var ( + ListRefsRequest_SortBy_Key_name = map[int32]string{ + 0: "REFNAME", + 1: "CREATORDATE", + 2: "AUTHORDATE", + 3: "COMMITTERDATE", + } + ListRefsRequest_SortBy_Key_value = map[string]int32{ + "REFNAME": 0, + "CREATORDATE": 1, + "AUTHORDATE": 2, + "COMMITTERDATE": 3, + } +) + +func (x ListRefsRequest_SortBy_Key) Enum() *ListRefsRequest_SortBy_Key { + p := new(ListRefsRequest_SortBy_Key) + *p = x + return p +} + +func (x ListRefsRequest_SortBy_Key) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListRefsRequest_SortBy_Key) Descriptor() protoreflect.EnumDescriptor { + return file_ref_proto_enumTypes[3].Descriptor() +} + +func (ListRefsRequest_SortBy_Key) Type() protoreflect.EnumType { + return &file_ref_proto_enumTypes[3] +} + +func (x ListRefsRequest_SortBy_Key) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListRefsRequest_SortBy_Key.Descriptor instead. +func (ListRefsRequest_SortBy_Key) EnumDescriptor() ([]byte, []int) { + return file_ref_proto_rawDescGZIP(), []int{38, 0, 0} +} + type FindDefaultBranchNameRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2231,6 +2283,8 @@ type ListRefsRequest struct { // Head determines whether the RPC should also return the HEAD reference. By default, // pseudo-refs are not included in the response. Head bool `protobuf:"varint,3,opt,name=head,proto3" json:"head,omitempty"` + // SortBy allows to request SHAs in particular order. + SortBy *ListRefsRequest_SortBy `protobuf:"bytes,4,opt,name=sort_by,json=sortBy,proto3" json:"sort_by,omitempty"` } func (x *ListRefsRequest) Reset() { @@ -2286,6 +2340,13 @@ func (x *ListRefsRequest) GetHead() bool { return false } +func (x *ListRefsRequest) GetSortBy() *ListRefsRequest_SortBy { + if x != nil { + return x.SortBy + } + return nil +} + // ListRefsResponse is a response for the ListRefs RPC. The RPC can return multiple responses // in case there are more references than fit into a single gRPC message. type ListRefsResponse struct { @@ -2652,6 +2713,62 @@ func (x *GetTagSignaturesResponse_TagSignature) GetContent() []byte { return nil } +type ListRefsRequest_SortBy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Key is a key used for sorting. + Key ListRefsRequest_SortBy_Key `protobuf:"varint,1,opt,name=key,proto3,enum=gitaly.ListRefsRequest_SortBy_Key" json:"key,omitempty"` + Direction SortDirection `protobuf:"varint,2,opt,name=direction,proto3,enum=gitaly.SortDirection" json:"direction,omitempty"` +} + +func (x *ListRefsRequest_SortBy) Reset() { + *x = ListRefsRequest_SortBy{} + if protoimpl.UnsafeEnabled { + mi := &file_ref_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRefsRequest_SortBy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRefsRequest_SortBy) ProtoMessage() {} + +func (x *ListRefsRequest_SortBy) ProtoReflect() protoreflect.Message { + mi := &file_ref_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRefsRequest_SortBy.ProtoReflect.Descriptor instead. +func (*ListRefsRequest_SortBy) Descriptor() ([]byte, []int) { + return file_ref_proto_rawDescGZIP(), []int{38, 0} +} + +func (x *ListRefsRequest_SortBy) GetKey() ListRefsRequest_SortBy_Key { + if x != nil { + return x.Key + } + return ListRefsRequest_SortBy_REFNAME +} + +func (x *ListRefsRequest_SortBy) GetDirection() SortDirection { + if x != nil { + return x.Direction + } + return SortDirection_ASCENDING +} + // Reference is a direct Git reference. No symbolic references will ever be returned by this RPC. type ListRefsResponse_Reference struct { state protoimpl.MessageState @@ -2667,7 +2784,7 @@ type ListRefsResponse_Reference struct { func (x *ListRefsResponse_Reference) Reset() { *x = ListRefsResponse_Reference{} if protoimpl.UnsafeEnabled { - mi := &file_ref_proto_msgTypes[45] + mi := &file_ref_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2680,7 +2797,7 @@ func (x *ListRefsResponse_Reference) String() string { func (*ListRefsResponse_Reference) ProtoMessage() {} func (x *ListRefsResponse_Reference) ProtoReflect() protoreflect.Message { - mi := &file_ref_proto_msgTypes[45] + mi := &file_ref_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2995,148 +3112,164 @@ var file_ref_proto_rawDesc = []byte{ 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, - 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0c, 0x52, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, - 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, - 0x79, 0x4f, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x5f, 0x70, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, - 0x65, 0x66, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, - 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, - 0x2b, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, 0x44, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x32, 0xa2, 0x0d, 0x0a, - 0x0a, 0x52, 0x65, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x15, 0x46, - 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x65, 0x0a, 0x12, 0x46, 0x69, 0x6e, - 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, - 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, - 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x62, - 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, - 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, - 0x12, 0x50, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, - 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, - 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, - 0x30, 0x01, 0x12, 0x42, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x16, 0x2e, + 0x6e, 0x73, 0x65, 0x22, 0xf2, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x68, 0x65, 0x61, + 0x64, 0x12, 0x37, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, + 0x42, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x1a, 0xbb, 0x01, 0x0a, 0x06, 0x53, + 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x34, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, + 0x42, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x09, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x46, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x46, 0x4e, 0x41, + 0x4d, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x52, 0x45, 0x41, 0x54, 0x4f, 0x52, 0x44, + 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x44, + 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, + 0x45, 0x52, 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, + 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x14, 0x46, + 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, + 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x2b, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x52, + 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x72, 0x65, 0x66, 0x73, 0x32, 0xa2, 0x0d, 0x0a, 0x0a, 0x52, 0x65, 0x66, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, + 0x02, 0x12, 0x65, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, + 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, + 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, + 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x62, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, + 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x1e, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, + 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, + 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, + 0x64, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x07, 0x46, 0x69, + 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x6e, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, - 0x6c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, - 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, - 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x45, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, - 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, - 0x12, 0x4b, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x19, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4b, 0x0a, - 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x1f, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x2e, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x1c, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, - 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, - 0x12, 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x61, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x08, 0x50, - 0x61, 0x63, 0x6b, 0x52, 0x65, 0x66, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x6e, + 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x48, + 0x0a, 0x09, 0x52, 0x65, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, + 0x65, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4b, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, + 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x46, 0x69, 0x6e, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, + 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4b, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x66, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, - 0x08, 0x01, 0x12, 0x47, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x17, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x46, - 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, 0x44, 0x12, 0x1c, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, - 0x4f, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, - 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x08, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, + 0x01, 0x12, 0x83, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, + 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, + 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, + 0x61, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, + 0x02, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x66, 0x73, 0x12, + 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x66, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x47, 0x0a, 0x08, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, + 0x02, 0x30, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, + 0x79, 0x4f, 0x49, 0x44, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x66, 0x73, 0x42, 0x79, 0x4f, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, + 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, + 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3151,149 +3284,154 @@ func file_ref_proto_rawDescGZIP() []byte { return file_ref_proto_rawDescData } -var file_ref_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_ref_proto_msgTypes = make([]protoimpl.MessageInfo, 46) +var file_ref_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_ref_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_ref_proto_goTypes = []interface{}{ (FindLocalBranchesRequest_SortBy)(0), // 0: gitaly.FindLocalBranchesRequest.SortBy (FindAllTagsRequest_SortBy_Key)(0), // 1: gitaly.FindAllTagsRequest.SortBy.Key (CreateBranchResponse_Status)(0), // 2: gitaly.CreateBranchResponse.Status - (*FindDefaultBranchNameRequest)(nil), // 3: gitaly.FindDefaultBranchNameRequest - (*FindDefaultBranchNameResponse)(nil), // 4: gitaly.FindDefaultBranchNameResponse - (*FindAllBranchNamesRequest)(nil), // 5: gitaly.FindAllBranchNamesRequest - (*FindAllBranchNamesResponse)(nil), // 6: gitaly.FindAllBranchNamesResponse - (*FindAllTagNamesRequest)(nil), // 7: gitaly.FindAllTagNamesRequest - (*FindAllTagNamesResponse)(nil), // 8: gitaly.FindAllTagNamesResponse - (*FindLocalBranchesRequest)(nil), // 9: gitaly.FindLocalBranchesRequest - (*FindLocalBranchesResponse)(nil), // 10: gitaly.FindLocalBranchesResponse - (*FindLocalBranchResponse)(nil), // 11: gitaly.FindLocalBranchResponse - (*FindLocalBranchCommitAuthor)(nil), // 12: gitaly.FindLocalBranchCommitAuthor - (*FindAllBranchesRequest)(nil), // 13: gitaly.FindAllBranchesRequest - (*FindAllBranchesResponse)(nil), // 14: gitaly.FindAllBranchesResponse - (*FindTagRequest)(nil), // 15: gitaly.FindTagRequest - (*FindTagResponse)(nil), // 16: gitaly.FindTagResponse - (*FindAllTagsRequest)(nil), // 17: gitaly.FindAllTagsRequest - (*FindAllTagsResponse)(nil), // 18: gitaly.FindAllTagsResponse - (*RefExistsRequest)(nil), // 19: gitaly.RefExistsRequest - (*RefExistsResponse)(nil), // 20: gitaly.RefExistsResponse - (*CreateBranchRequest)(nil), // 21: gitaly.CreateBranchRequest - (*CreateBranchResponse)(nil), // 22: gitaly.CreateBranchResponse - (*DeleteBranchRequest)(nil), // 23: gitaly.DeleteBranchRequest - (*DeleteBranchResponse)(nil), // 24: gitaly.DeleteBranchResponse - (*FindBranchRequest)(nil), // 25: gitaly.FindBranchRequest - (*FindBranchResponse)(nil), // 26: gitaly.FindBranchResponse - (*DeleteRefsRequest)(nil), // 27: gitaly.DeleteRefsRequest - (*DeleteRefsResponse)(nil), // 28: gitaly.DeleteRefsResponse - (*ListBranchNamesContainingCommitRequest)(nil), // 29: gitaly.ListBranchNamesContainingCommitRequest - (*ListBranchNamesContainingCommitResponse)(nil), // 30: gitaly.ListBranchNamesContainingCommitResponse - (*ListTagNamesContainingCommitRequest)(nil), // 31: gitaly.ListTagNamesContainingCommitRequest - (*ListTagNamesContainingCommitResponse)(nil), // 32: gitaly.ListTagNamesContainingCommitResponse - (*GetTagSignaturesRequest)(nil), // 33: gitaly.GetTagSignaturesRequest - (*GetTagSignaturesResponse)(nil), // 34: gitaly.GetTagSignaturesResponse - (*GetTagMessagesRequest)(nil), // 35: gitaly.GetTagMessagesRequest - (*GetTagMessagesResponse)(nil), // 36: gitaly.GetTagMessagesResponse - (*FindAllRemoteBranchesRequest)(nil), // 37: gitaly.FindAllRemoteBranchesRequest - (*FindAllRemoteBranchesResponse)(nil), // 38: gitaly.FindAllRemoteBranchesResponse - (*PackRefsRequest)(nil), // 39: gitaly.PackRefsRequest - (*PackRefsResponse)(nil), // 40: gitaly.PackRefsResponse - (*ListRefsRequest)(nil), // 41: gitaly.ListRefsRequest - (*ListRefsResponse)(nil), // 42: gitaly.ListRefsResponse - (*FindRefsByOIDRequest)(nil), // 43: gitaly.FindRefsByOIDRequest - (*FindRefsByOIDResponse)(nil), // 44: gitaly.FindRefsByOIDResponse - (*FindAllBranchesResponse_Branch)(nil), // 45: gitaly.FindAllBranchesResponse.Branch - (*FindAllTagsRequest_SortBy)(nil), // 46: gitaly.FindAllTagsRequest.SortBy - (*GetTagSignaturesResponse_TagSignature)(nil), // 47: gitaly.GetTagSignaturesResponse.TagSignature - (*ListRefsResponse_Reference)(nil), // 48: gitaly.ListRefsResponse.Reference - (*Repository)(nil), // 49: gitaly.Repository - (*PaginationParameter)(nil), // 50: gitaly.PaginationParameter - (*GitCommit)(nil), // 51: gitaly.GitCommit - (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp - (*Tag)(nil), // 53: gitaly.Tag - (*Branch)(nil), // 54: gitaly.Branch - (SortDirection)(0), // 55: gitaly.SortDirection + (ListRefsRequest_SortBy_Key)(0), // 3: gitaly.ListRefsRequest.SortBy.Key + (*FindDefaultBranchNameRequest)(nil), // 4: gitaly.FindDefaultBranchNameRequest + (*FindDefaultBranchNameResponse)(nil), // 5: gitaly.FindDefaultBranchNameResponse + (*FindAllBranchNamesRequest)(nil), // 6: gitaly.FindAllBranchNamesRequest + (*FindAllBranchNamesResponse)(nil), // 7: gitaly.FindAllBranchNamesResponse + (*FindAllTagNamesRequest)(nil), // 8: gitaly.FindAllTagNamesRequest + (*FindAllTagNamesResponse)(nil), // 9: gitaly.FindAllTagNamesResponse + (*FindLocalBranchesRequest)(nil), // 10: gitaly.FindLocalBranchesRequest + (*FindLocalBranchesResponse)(nil), // 11: gitaly.FindLocalBranchesResponse + (*FindLocalBranchResponse)(nil), // 12: gitaly.FindLocalBranchResponse + (*FindLocalBranchCommitAuthor)(nil), // 13: gitaly.FindLocalBranchCommitAuthor + (*FindAllBranchesRequest)(nil), // 14: gitaly.FindAllBranchesRequest + (*FindAllBranchesResponse)(nil), // 15: gitaly.FindAllBranchesResponse + (*FindTagRequest)(nil), // 16: gitaly.FindTagRequest + (*FindTagResponse)(nil), // 17: gitaly.FindTagResponse + (*FindAllTagsRequest)(nil), // 18: gitaly.FindAllTagsRequest + (*FindAllTagsResponse)(nil), // 19: gitaly.FindAllTagsResponse + (*RefExistsRequest)(nil), // 20: gitaly.RefExistsRequest + (*RefExistsResponse)(nil), // 21: gitaly.RefExistsResponse + (*CreateBranchRequest)(nil), // 22: gitaly.CreateBranchRequest + (*CreateBranchResponse)(nil), // 23: gitaly.CreateBranchResponse + (*DeleteBranchRequest)(nil), // 24: gitaly.DeleteBranchRequest + (*DeleteBranchResponse)(nil), // 25: gitaly.DeleteBranchResponse + (*FindBranchRequest)(nil), // 26: gitaly.FindBranchRequest + (*FindBranchResponse)(nil), // 27: gitaly.FindBranchResponse + (*DeleteRefsRequest)(nil), // 28: gitaly.DeleteRefsRequest + (*DeleteRefsResponse)(nil), // 29: gitaly.DeleteRefsResponse + (*ListBranchNamesContainingCommitRequest)(nil), // 30: gitaly.ListBranchNamesContainingCommitRequest + (*ListBranchNamesContainingCommitResponse)(nil), // 31: gitaly.ListBranchNamesContainingCommitResponse + (*ListTagNamesContainingCommitRequest)(nil), // 32: gitaly.ListTagNamesContainingCommitRequest + (*ListTagNamesContainingCommitResponse)(nil), // 33: gitaly.ListTagNamesContainingCommitResponse + (*GetTagSignaturesRequest)(nil), // 34: gitaly.GetTagSignaturesRequest + (*GetTagSignaturesResponse)(nil), // 35: gitaly.GetTagSignaturesResponse + (*GetTagMessagesRequest)(nil), // 36: gitaly.GetTagMessagesRequest + (*GetTagMessagesResponse)(nil), // 37: gitaly.GetTagMessagesResponse + (*FindAllRemoteBranchesRequest)(nil), // 38: gitaly.FindAllRemoteBranchesRequest + (*FindAllRemoteBranchesResponse)(nil), // 39: gitaly.FindAllRemoteBranchesResponse + (*PackRefsRequest)(nil), // 40: gitaly.PackRefsRequest + (*PackRefsResponse)(nil), // 41: gitaly.PackRefsResponse + (*ListRefsRequest)(nil), // 42: gitaly.ListRefsRequest + (*ListRefsResponse)(nil), // 43: gitaly.ListRefsResponse + (*FindRefsByOIDRequest)(nil), // 44: gitaly.FindRefsByOIDRequest + (*FindRefsByOIDResponse)(nil), // 45: gitaly.FindRefsByOIDResponse + (*FindAllBranchesResponse_Branch)(nil), // 46: gitaly.FindAllBranchesResponse.Branch + (*FindAllTagsRequest_SortBy)(nil), // 47: gitaly.FindAllTagsRequest.SortBy + (*GetTagSignaturesResponse_TagSignature)(nil), // 48: gitaly.GetTagSignaturesResponse.TagSignature + (*ListRefsRequest_SortBy)(nil), // 49: gitaly.ListRefsRequest.SortBy + (*ListRefsResponse_Reference)(nil), // 50: gitaly.ListRefsResponse.Reference + (*Repository)(nil), // 51: gitaly.Repository + (*PaginationParameter)(nil), // 52: gitaly.PaginationParameter + (*GitCommit)(nil), // 53: gitaly.GitCommit + (*timestamppb.Timestamp)(nil), // 54: google.protobuf.Timestamp + (*Tag)(nil), // 55: gitaly.Tag + (*Branch)(nil), // 56: gitaly.Branch + (SortDirection)(0), // 57: gitaly.SortDirection } var file_ref_proto_depIdxs = []int32{ - 49, // 0: gitaly.FindDefaultBranchNameRequest.repository:type_name -> gitaly.Repository - 49, // 1: gitaly.FindAllBranchNamesRequest.repository:type_name -> gitaly.Repository - 49, // 2: gitaly.FindAllTagNamesRequest.repository:type_name -> gitaly.Repository - 49, // 3: gitaly.FindLocalBranchesRequest.repository:type_name -> gitaly.Repository + 51, // 0: gitaly.FindDefaultBranchNameRequest.repository:type_name -> gitaly.Repository + 51, // 1: gitaly.FindAllBranchNamesRequest.repository:type_name -> gitaly.Repository + 51, // 2: gitaly.FindAllTagNamesRequest.repository:type_name -> gitaly.Repository + 51, // 3: gitaly.FindLocalBranchesRequest.repository:type_name -> gitaly.Repository 0, // 4: gitaly.FindLocalBranchesRequest.sort_by:type_name -> gitaly.FindLocalBranchesRequest.SortBy - 50, // 5: gitaly.FindLocalBranchesRequest.pagination_params:type_name -> gitaly.PaginationParameter - 11, // 6: gitaly.FindLocalBranchesResponse.branches:type_name -> gitaly.FindLocalBranchResponse - 12, // 7: gitaly.FindLocalBranchResponse.commit_author:type_name -> gitaly.FindLocalBranchCommitAuthor - 12, // 8: gitaly.FindLocalBranchResponse.commit_committer:type_name -> gitaly.FindLocalBranchCommitAuthor - 51, // 9: gitaly.FindLocalBranchResponse.commit:type_name -> gitaly.GitCommit - 52, // 10: gitaly.FindLocalBranchCommitAuthor.date:type_name -> google.protobuf.Timestamp - 49, // 11: gitaly.FindAllBranchesRequest.repository:type_name -> gitaly.Repository - 45, // 12: gitaly.FindAllBranchesResponse.branches:type_name -> gitaly.FindAllBranchesResponse.Branch - 49, // 13: gitaly.FindTagRequest.repository:type_name -> gitaly.Repository - 53, // 14: gitaly.FindTagResponse.tag:type_name -> gitaly.Tag - 49, // 15: gitaly.FindAllTagsRequest.repository:type_name -> gitaly.Repository - 46, // 16: gitaly.FindAllTagsRequest.sort_by:type_name -> gitaly.FindAllTagsRequest.SortBy - 50, // 17: gitaly.FindAllTagsRequest.pagination_params:type_name -> gitaly.PaginationParameter - 53, // 18: gitaly.FindAllTagsResponse.tags:type_name -> gitaly.Tag - 49, // 19: gitaly.RefExistsRequest.repository:type_name -> gitaly.Repository - 49, // 20: gitaly.CreateBranchRequest.repository:type_name -> gitaly.Repository + 52, // 5: gitaly.FindLocalBranchesRequest.pagination_params:type_name -> gitaly.PaginationParameter + 12, // 6: gitaly.FindLocalBranchesResponse.branches:type_name -> gitaly.FindLocalBranchResponse + 13, // 7: gitaly.FindLocalBranchResponse.commit_author:type_name -> gitaly.FindLocalBranchCommitAuthor + 13, // 8: gitaly.FindLocalBranchResponse.commit_committer:type_name -> gitaly.FindLocalBranchCommitAuthor + 53, // 9: gitaly.FindLocalBranchResponse.commit:type_name -> gitaly.GitCommit + 54, // 10: gitaly.FindLocalBranchCommitAuthor.date:type_name -> google.protobuf.Timestamp + 51, // 11: gitaly.FindAllBranchesRequest.repository:type_name -> gitaly.Repository + 46, // 12: gitaly.FindAllBranchesResponse.branches:type_name -> gitaly.FindAllBranchesResponse.Branch + 51, // 13: gitaly.FindTagRequest.repository:type_name -> gitaly.Repository + 55, // 14: gitaly.FindTagResponse.tag:type_name -> gitaly.Tag + 51, // 15: gitaly.FindAllTagsRequest.repository:type_name -> gitaly.Repository + 47, // 16: gitaly.FindAllTagsRequest.sort_by:type_name -> gitaly.FindAllTagsRequest.SortBy + 52, // 17: gitaly.FindAllTagsRequest.pagination_params:type_name -> gitaly.PaginationParameter + 55, // 18: gitaly.FindAllTagsResponse.tags:type_name -> gitaly.Tag + 51, // 19: gitaly.RefExistsRequest.repository:type_name -> gitaly.Repository + 51, // 20: gitaly.CreateBranchRequest.repository:type_name -> gitaly.Repository 2, // 21: gitaly.CreateBranchResponse.status:type_name -> gitaly.CreateBranchResponse.Status - 54, // 22: gitaly.CreateBranchResponse.branch:type_name -> gitaly.Branch - 49, // 23: gitaly.DeleteBranchRequest.repository:type_name -> gitaly.Repository - 49, // 24: gitaly.FindBranchRequest.repository:type_name -> gitaly.Repository - 54, // 25: gitaly.FindBranchResponse.branch:type_name -> gitaly.Branch - 49, // 26: gitaly.DeleteRefsRequest.repository:type_name -> gitaly.Repository - 49, // 27: gitaly.ListBranchNamesContainingCommitRequest.repository:type_name -> gitaly.Repository - 49, // 28: gitaly.ListTagNamesContainingCommitRequest.repository:type_name -> gitaly.Repository - 49, // 29: gitaly.GetTagSignaturesRequest.repository:type_name -> gitaly.Repository - 47, // 30: gitaly.GetTagSignaturesResponse.signatures:type_name -> gitaly.GetTagSignaturesResponse.TagSignature - 49, // 31: gitaly.GetTagMessagesRequest.repository:type_name -> gitaly.Repository - 49, // 32: gitaly.FindAllRemoteBranchesRequest.repository:type_name -> gitaly.Repository - 54, // 33: gitaly.FindAllRemoteBranchesResponse.branches:type_name -> gitaly.Branch - 49, // 34: gitaly.PackRefsRequest.repository:type_name -> gitaly.Repository - 49, // 35: gitaly.ListRefsRequest.repository:type_name -> gitaly.Repository - 48, // 36: gitaly.ListRefsResponse.references:type_name -> gitaly.ListRefsResponse.Reference - 49, // 37: gitaly.FindRefsByOIDRequest.repository:type_name -> gitaly.Repository - 51, // 38: gitaly.FindAllBranchesResponse.Branch.target:type_name -> gitaly.GitCommit - 1, // 39: gitaly.FindAllTagsRequest.SortBy.key:type_name -> gitaly.FindAllTagsRequest.SortBy.Key - 55, // 40: gitaly.FindAllTagsRequest.SortBy.direction:type_name -> gitaly.SortDirection - 3, // 41: gitaly.RefService.FindDefaultBranchName:input_type -> gitaly.FindDefaultBranchNameRequest - 5, // 42: gitaly.RefService.FindAllBranchNames:input_type -> gitaly.FindAllBranchNamesRequest - 7, // 43: gitaly.RefService.FindAllTagNames:input_type -> gitaly.FindAllTagNamesRequest - 9, // 44: gitaly.RefService.FindLocalBranches:input_type -> gitaly.FindLocalBranchesRequest - 13, // 45: gitaly.RefService.FindAllBranches:input_type -> gitaly.FindAllBranchesRequest - 17, // 46: gitaly.RefService.FindAllTags:input_type -> gitaly.FindAllTagsRequest - 15, // 47: gitaly.RefService.FindTag:input_type -> gitaly.FindTagRequest - 37, // 48: gitaly.RefService.FindAllRemoteBranches:input_type -> gitaly.FindAllRemoteBranchesRequest - 19, // 49: gitaly.RefService.RefExists:input_type -> gitaly.RefExistsRequest - 25, // 50: gitaly.RefService.FindBranch:input_type -> gitaly.FindBranchRequest - 27, // 51: gitaly.RefService.DeleteRefs:input_type -> gitaly.DeleteRefsRequest - 29, // 52: gitaly.RefService.ListBranchNamesContainingCommit:input_type -> gitaly.ListBranchNamesContainingCommitRequest - 31, // 53: gitaly.RefService.ListTagNamesContainingCommit:input_type -> gitaly.ListTagNamesContainingCommitRequest - 33, // 54: gitaly.RefService.GetTagSignatures:input_type -> gitaly.GetTagSignaturesRequest - 35, // 55: gitaly.RefService.GetTagMessages:input_type -> gitaly.GetTagMessagesRequest - 39, // 56: gitaly.RefService.PackRefs:input_type -> gitaly.PackRefsRequest - 41, // 57: gitaly.RefService.ListRefs:input_type -> gitaly.ListRefsRequest - 43, // 58: gitaly.RefService.FindRefsByOID:input_type -> gitaly.FindRefsByOIDRequest - 4, // 59: gitaly.RefService.FindDefaultBranchName:output_type -> gitaly.FindDefaultBranchNameResponse - 6, // 60: gitaly.RefService.FindAllBranchNames:output_type -> gitaly.FindAllBranchNamesResponse - 8, // 61: gitaly.RefService.FindAllTagNames:output_type -> gitaly.FindAllTagNamesResponse - 10, // 62: gitaly.RefService.FindLocalBranches:output_type -> gitaly.FindLocalBranchesResponse - 14, // 63: gitaly.RefService.FindAllBranches:output_type -> gitaly.FindAllBranchesResponse - 18, // 64: gitaly.RefService.FindAllTags:output_type -> gitaly.FindAllTagsResponse - 16, // 65: gitaly.RefService.FindTag:output_type -> gitaly.FindTagResponse - 38, // 66: gitaly.RefService.FindAllRemoteBranches:output_type -> gitaly.FindAllRemoteBranchesResponse - 20, // 67: gitaly.RefService.RefExists:output_type -> gitaly.RefExistsResponse - 26, // 68: gitaly.RefService.FindBranch:output_type -> gitaly.FindBranchResponse - 28, // 69: gitaly.RefService.DeleteRefs:output_type -> gitaly.DeleteRefsResponse - 30, // 70: gitaly.RefService.ListBranchNamesContainingCommit:output_type -> gitaly.ListBranchNamesContainingCommitResponse - 32, // 71: gitaly.RefService.ListTagNamesContainingCommit:output_type -> gitaly.ListTagNamesContainingCommitResponse - 34, // 72: gitaly.RefService.GetTagSignatures:output_type -> gitaly.GetTagSignaturesResponse - 36, // 73: gitaly.RefService.GetTagMessages:output_type -> gitaly.GetTagMessagesResponse - 40, // 74: gitaly.RefService.PackRefs:output_type -> gitaly.PackRefsResponse - 42, // 75: gitaly.RefService.ListRefs:output_type -> gitaly.ListRefsResponse - 44, // 76: gitaly.RefService.FindRefsByOID:output_type -> gitaly.FindRefsByOIDResponse - 59, // [59:77] is the sub-list for method output_type - 41, // [41:59] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 56, // 22: gitaly.CreateBranchResponse.branch:type_name -> gitaly.Branch + 51, // 23: gitaly.DeleteBranchRequest.repository:type_name -> gitaly.Repository + 51, // 24: gitaly.FindBranchRequest.repository:type_name -> gitaly.Repository + 56, // 25: gitaly.FindBranchResponse.branch:type_name -> gitaly.Branch + 51, // 26: gitaly.DeleteRefsRequest.repository:type_name -> gitaly.Repository + 51, // 27: gitaly.ListBranchNamesContainingCommitRequest.repository:type_name -> gitaly.Repository + 51, // 28: gitaly.ListTagNamesContainingCommitRequest.repository:type_name -> gitaly.Repository + 51, // 29: gitaly.GetTagSignaturesRequest.repository:type_name -> gitaly.Repository + 48, // 30: gitaly.GetTagSignaturesResponse.signatures:type_name -> gitaly.GetTagSignaturesResponse.TagSignature + 51, // 31: gitaly.GetTagMessagesRequest.repository:type_name -> gitaly.Repository + 51, // 32: gitaly.FindAllRemoteBranchesRequest.repository:type_name -> gitaly.Repository + 56, // 33: gitaly.FindAllRemoteBranchesResponse.branches:type_name -> gitaly.Branch + 51, // 34: gitaly.PackRefsRequest.repository:type_name -> gitaly.Repository + 51, // 35: gitaly.ListRefsRequest.repository:type_name -> gitaly.Repository + 49, // 36: gitaly.ListRefsRequest.sort_by:type_name -> gitaly.ListRefsRequest.SortBy + 50, // 37: gitaly.ListRefsResponse.references:type_name -> gitaly.ListRefsResponse.Reference + 51, // 38: gitaly.FindRefsByOIDRequest.repository:type_name -> gitaly.Repository + 53, // 39: gitaly.FindAllBranchesResponse.Branch.target:type_name -> gitaly.GitCommit + 1, // 40: gitaly.FindAllTagsRequest.SortBy.key:type_name -> gitaly.FindAllTagsRequest.SortBy.Key + 57, // 41: gitaly.FindAllTagsRequest.SortBy.direction:type_name -> gitaly.SortDirection + 3, // 42: gitaly.ListRefsRequest.SortBy.key:type_name -> gitaly.ListRefsRequest.SortBy.Key + 57, // 43: gitaly.ListRefsRequest.SortBy.direction:type_name -> gitaly.SortDirection + 4, // 44: gitaly.RefService.FindDefaultBranchName:input_type -> gitaly.FindDefaultBranchNameRequest + 6, // 45: gitaly.RefService.FindAllBranchNames:input_type -> gitaly.FindAllBranchNamesRequest + 8, // 46: gitaly.RefService.FindAllTagNames:input_type -> gitaly.FindAllTagNamesRequest + 10, // 47: gitaly.RefService.FindLocalBranches:input_type -> gitaly.FindLocalBranchesRequest + 14, // 48: gitaly.RefService.FindAllBranches:input_type -> gitaly.FindAllBranchesRequest + 18, // 49: gitaly.RefService.FindAllTags:input_type -> gitaly.FindAllTagsRequest + 16, // 50: gitaly.RefService.FindTag:input_type -> gitaly.FindTagRequest + 38, // 51: gitaly.RefService.FindAllRemoteBranches:input_type -> gitaly.FindAllRemoteBranchesRequest + 20, // 52: gitaly.RefService.RefExists:input_type -> gitaly.RefExistsRequest + 26, // 53: gitaly.RefService.FindBranch:input_type -> gitaly.FindBranchRequest + 28, // 54: gitaly.RefService.DeleteRefs:input_type -> gitaly.DeleteRefsRequest + 30, // 55: gitaly.RefService.ListBranchNamesContainingCommit:input_type -> gitaly.ListBranchNamesContainingCommitRequest + 32, // 56: gitaly.RefService.ListTagNamesContainingCommit:input_type -> gitaly.ListTagNamesContainingCommitRequest + 34, // 57: gitaly.RefService.GetTagSignatures:input_type -> gitaly.GetTagSignaturesRequest + 36, // 58: gitaly.RefService.GetTagMessages:input_type -> gitaly.GetTagMessagesRequest + 40, // 59: gitaly.RefService.PackRefs:input_type -> gitaly.PackRefsRequest + 42, // 60: gitaly.RefService.ListRefs:input_type -> gitaly.ListRefsRequest + 44, // 61: gitaly.RefService.FindRefsByOID:input_type -> gitaly.FindRefsByOIDRequest + 5, // 62: gitaly.RefService.FindDefaultBranchName:output_type -> gitaly.FindDefaultBranchNameResponse + 7, // 63: gitaly.RefService.FindAllBranchNames:output_type -> gitaly.FindAllBranchNamesResponse + 9, // 64: gitaly.RefService.FindAllTagNames:output_type -> gitaly.FindAllTagNamesResponse + 11, // 65: gitaly.RefService.FindLocalBranches:output_type -> gitaly.FindLocalBranchesResponse + 15, // 66: gitaly.RefService.FindAllBranches:output_type -> gitaly.FindAllBranchesResponse + 19, // 67: gitaly.RefService.FindAllTags:output_type -> gitaly.FindAllTagsResponse + 17, // 68: gitaly.RefService.FindTag:output_type -> gitaly.FindTagResponse + 39, // 69: gitaly.RefService.FindAllRemoteBranches:output_type -> gitaly.FindAllRemoteBranchesResponse + 21, // 70: gitaly.RefService.RefExists:output_type -> gitaly.RefExistsResponse + 27, // 71: gitaly.RefService.FindBranch:output_type -> gitaly.FindBranchResponse + 29, // 72: gitaly.RefService.DeleteRefs:output_type -> gitaly.DeleteRefsResponse + 31, // 73: gitaly.RefService.ListBranchNamesContainingCommit:output_type -> gitaly.ListBranchNamesContainingCommitResponse + 33, // 74: gitaly.RefService.ListTagNamesContainingCommit:output_type -> gitaly.ListTagNamesContainingCommitResponse + 35, // 75: gitaly.RefService.GetTagSignatures:output_type -> gitaly.GetTagSignaturesResponse + 37, // 76: gitaly.RefService.GetTagMessages:output_type -> gitaly.GetTagMessagesResponse + 41, // 77: gitaly.RefService.PackRefs:output_type -> gitaly.PackRefsResponse + 43, // 78: gitaly.RefService.ListRefs:output_type -> gitaly.ListRefsResponse + 45, // 79: gitaly.RefService.FindRefsByOID:output_type -> gitaly.FindRefsByOIDResponse + 62, // [62:80] is the sub-list for method output_type + 44, // [44:62] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_ref_proto_init() } @@ -3845,6 +3983,18 @@ func file_ref_proto_init() { } } file_ref_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRefsRequest_SortBy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ref_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRefsResponse_Reference); i { case 0: return &v.state @@ -3862,8 +4012,8 @@ func file_ref_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_ref_proto_rawDesc, - NumEnums: 3, - NumMessages: 46, + NumEnums: 4, + NumMessages: 47, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/ref.proto b/proto/ref.proto index c3c692e19..892624b62 100644 --- a/proto/ref.proto +++ b/proto/ref.proto @@ -399,6 +399,22 @@ message ListRefsRequest { // Head determines whether the RPC should also return the HEAD reference. By default, // pseudo-refs are not included in the response. bool head = 3; + + message SortBy { + enum Key { + REFNAME = 0; + CREATORDATE = 1; + AUTHORDATE = 2; + COMMITTERDATE = 3; + } + + // Key is a key used for sorting. + Key key = 1; + SortDirection direction = 2; + } + + // SortBy allows to request SHAs in particular order. + SortBy sort_by = 4; } // ListRefsResponse is a response for the ListRefs RPC. The RPC can return multiple responses diff --git a/ruby/proto/gitaly/ref_pb.rb b/ruby/proto/gitaly/ref_pb.rb index 128abcf6c..4424cf61b 100644 --- a/ruby/proto/gitaly/ref_pb.rb +++ b/ruby/proto/gitaly/ref_pb.rb @@ -183,6 +183,17 @@ Google::Protobuf::DescriptorPool.generated_pool.build do optional :repository, :message, 1, "gitaly.Repository" repeated :patterns, :bytes, 2 optional :head, :bool, 3 + optional :sort_by, :message, 4, "gitaly.ListRefsRequest.SortBy" + end + add_message "gitaly.ListRefsRequest.SortBy" do + optional :key, :enum, 1, "gitaly.ListRefsRequest.SortBy.Key" + optional :direction, :enum, 2, "gitaly.SortDirection" + end + add_enum "gitaly.ListRefsRequest.SortBy.Key" do + value :REFNAME, 0 + value :CREATORDATE, 1 + value :AUTHORDATE, 2 + value :COMMITTERDATE, 3 end add_message "gitaly.ListRefsResponse" do repeated :references, :message, 1, "gitaly.ListRefsResponse.Reference" @@ -250,6 +261,8 @@ module Gitaly PackRefsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.PackRefsRequest").msgclass PackRefsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.PackRefsResponse").msgclass ListRefsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.ListRefsRequest").msgclass + ListRefsRequest::SortBy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.ListRefsRequest.SortBy").msgclass + ListRefsRequest::SortBy::Key = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.ListRefsRequest.SortBy.Key").enummodule ListRefsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.ListRefsResponse").msgclass ListRefsResponse::Reference = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.ListRefsResponse.Reference").msgclass FindRefsByOIDRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.FindRefsByOIDRequest").msgclass |