Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <proglottis@gmail.com>2022-04-06 03:56:05 +0300
committerJames Fargher <proglottis@gmail.com>2022-04-06 03:56:05 +0300
commit02f95f0b6651ac8e81d0f02b9f15ed86a09019d6 (patch)
tree908818f06c4709072da8498f30a01dfe3898a629
parent25b61b5653afd356aa98159128859a9c41fcf4db (diff)
parent50b1bcba87438c0a8bf4f00fe7b55d921e40164f (diff)
Merge branch 'jc-filter-nonexisting-revisions' into 'master'
commit: Add CheckObjectsExist RPC Closes #3986 See merge request gitlab-org/gitaly!4450
-rw-r--r--internal/gitaly/service/commit/check_objects_exist.go110
-rw-r--r--internal/gitaly/service/commit/check_objects_exist_test.go121
-rw-r--r--proto/commit.proto29
-rw-r--r--proto/go/gitalypb/commit.pb.go728
-rw-r--r--proto/go/gitalypb/commit_grpc.pb.go76
-rw-r--r--ruby/proto/gitaly/commit_pb.rb14
-rw-r--r--ruby/proto/gitaly/commit_services_pb.rb5
7 files changed, 834 insertions, 249 deletions
diff --git a/internal/gitaly/service/commit/check_objects_exist.go b/internal/gitaly/service/commit/check_objects_exist.go
new file mode 100644
index 000000000..baab66f51
--- /dev/null
+++ b/internal/gitaly/service/commit/check_objects_exist.go
@@ -0,0 +1,110 @@
+package commit
+
+import (
+ "context"
+ "io"
+
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/catfile"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/helper/chunk"
+ "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
+ "google.golang.org/protobuf/proto"
+)
+
+func (s *server) CheckObjectsExist(
+ stream gitalypb.CommitService_CheckObjectsExistServer,
+) error {
+ ctx := stream.Context()
+
+ request, err := stream.Recv()
+ if err != nil {
+ return err
+ }
+
+ if err := validateCheckObjectsExistRequest(request); err != nil {
+ return err
+ }
+
+ objectInfoReader, err := s.catfileCache.ObjectInfoReader(
+ ctx,
+ s.localrepo(request.GetRepository()),
+ )
+ if err != nil {
+ return err
+ }
+
+ chunker := chunk.New(&checkObjectsExistSender{stream: stream})
+ for {
+ request, err := stream.Recv()
+ if err != nil {
+ if err == io.EOF {
+ return chunker.Flush()
+ }
+ return err
+ }
+
+ if err = checkObjectsExist(ctx, request, objectInfoReader, chunker); err != nil {
+ return err
+ }
+ }
+}
+
+type checkObjectsExistSender struct {
+ stream gitalypb.CommitService_CheckObjectsExistServer
+ revisions []*gitalypb.CheckObjectsExistResponse_RevisionExistence
+}
+
+func (c *checkObjectsExistSender) Send() error {
+ return c.stream.Send(&gitalypb.CheckObjectsExistResponse{
+ Revisions: c.revisions,
+ })
+}
+
+func (c *checkObjectsExistSender) Reset() {
+ c.revisions = make([]*gitalypb.CheckObjectsExistResponse_RevisionExistence, 0)
+}
+
+func (c *checkObjectsExistSender) Append(m proto.Message) {
+ c.revisions = append(c.revisions, m.(*gitalypb.CheckObjectsExistResponse_RevisionExistence))
+}
+
+func checkObjectsExist(
+ ctx context.Context,
+ request *gitalypb.CheckObjectsExistRequest,
+ objectInfoReader catfile.ObjectInfoReader,
+ chunker *chunk.Chunker,
+) error {
+ revisions := request.GetRevisions()
+
+ for _, revision := range revisions {
+ revisionExistence := gitalypb.CheckObjectsExistResponse_RevisionExistence{
+ Name: revision,
+ Exists: true,
+ }
+ _, err := objectInfoReader.Info(ctx, git.Revision(revision))
+ if err != nil {
+ if catfile.IsNotFound(err) {
+ revisionExistence.Exists = false
+ } else {
+ return err
+ }
+ }
+
+ if err := chunker.Send(&revisionExistence); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func validateCheckObjectsExistRequest(in *gitalypb.CheckObjectsExistRequest) error {
+ for _, revision := range in.GetRevisions() {
+ if err := git.ValidateRevision(revision); err != nil {
+ return helper.ErrInvalidArgument(err)
+ }
+ }
+
+ return nil
+}
diff --git a/internal/gitaly/service/commit/check_objects_exist_test.go b/internal/gitaly/service/commit/check_objects_exist_test.go
new file mode 100644
index 000000000..97fed524f
--- /dev/null
+++ b/internal/gitaly/service/commit/check_objects_exist_test.go
@@ -0,0 +1,121 @@
+package commit
+
+import (
+ "io"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/gittest"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper"
+ "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
+ "google.golang.org/grpc/codes"
+)
+
+func TestCheckObjectsExist(t *testing.T) {
+ t.Parallel()
+
+ ctx := testhelper.Context(t)
+ cfg, repo, repoPath, client := setupCommitServiceWithRepo(ctx, t, true)
+
+ // write a few commitIDs we can use
+ commitID1 := gittest.WriteCommit(t, cfg, repoPath)
+ commitID2 := gittest.WriteCommit(t, cfg, repoPath)
+ commitID3 := gittest.WriteCommit(t, cfg, repoPath)
+
+ // remove a ref from the repository so we know it doesn't exist
+ gittest.Exec(t, cfg, "-C", repoPath, "update-ref", "-d", "refs/heads/many_files")
+
+ nonexistingObject := "abcdefg"
+ cmd := gittest.NewCommand(t, cfg, "-C", repoPath, "rev-parse", nonexistingObject)
+ require.Error(t, cmd.Wait(), "ensure the object doesn't exist")
+
+ testCases := []struct {
+ desc string
+ input [][]byte
+ revisionsExistence map[string]bool
+ returnCode codes.Code
+ }{
+ {
+ desc: "commit ids and refs that exist",
+ input: [][]byte{
+ []byte(commitID1),
+ []byte("master"),
+ []byte(commitID2),
+ []byte(commitID3),
+ []byte("feature"),
+ },
+ revisionsExistence: map[string]bool{
+ "master": true,
+ commitID2.String(): true,
+ commitID3.String(): true,
+ "feature": true,
+ },
+ returnCode: codes.OK,
+ },
+ {
+ desc: "ref and objects missing",
+ input: [][]byte{
+ []byte(commitID1),
+ []byte("master"),
+ []byte(commitID2),
+ []byte(commitID3),
+ []byte("feature"),
+ []byte("many_files"),
+ []byte(nonexistingObject),
+ },
+ revisionsExistence: map[string]bool{
+ "master": true,
+ commitID2.String(): true,
+ commitID3.String(): true,
+ "feature": true,
+ "many_files": false,
+ nonexistingObject: false,
+ },
+ returnCode: codes.OK,
+ },
+ {
+ desc: "empty input",
+ input: [][]byte{},
+ returnCode: codes.OK,
+ revisionsExistence: map[string]bool{},
+ },
+ {
+ desc: "invalid input",
+ input: [][]byte{[]byte("-not-a-rev")},
+ returnCode: codes.InvalidArgument,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ c, err := client.CheckObjectsExist(ctx)
+ require.NoError(t, err)
+
+ require.NoError(t, c.Send(
+ &gitalypb.CheckObjectsExistRequest{
+ Repository: repo,
+ Revisions: tc.input,
+ },
+ ))
+ require.NoError(t, c.CloseSend())
+
+ for {
+ resp, err := c.Recv()
+ if tc.returnCode != codes.OK {
+ testhelper.RequireGrpcCode(t, err, tc.returnCode)
+ break
+ } else if err != nil {
+ require.Error(t, err, io.EOF)
+ break
+ }
+
+ actualRevisionsExistence := make(map[string]bool)
+ for _, revisionExistence := range resp.GetRevisions() {
+ actualRevisionsExistence[string(revisionExistence.GetName())] = revisionExistence.GetExists()
+ }
+ assert.Equal(t, tc.revisionsExistence, actualRevisionsExistence)
+ }
+ })
+ }
+}
diff --git a/proto/commit.proto b/proto/commit.proto
index d8c27990c..405d54f5a 100644
--- a/proto/commit.proto
+++ b/proto/commit.proto
@@ -130,6 +130,16 @@ service CommitService {
op: ACCESSOR
};
}
+
+ // CheckObjectsExist will check for the existence of revisions against a
+ // repository. It returns two sets of data. An array containing the revisions
+ // fromm the input that it found on the repository, and an array that contains all
+ // revisions from the input it did not find on the repository.
+ rpc CheckObjectsExist(stream CheckObjectsExistRequest) returns (stream CheckObjectsExistResponse) {
+ option (op_type) = {
+ op: ACCESSOR
+ };
+ }
}
// ListCommitsRequest is a request for the ListCommits RPC.
@@ -565,3 +575,22 @@ message GetCommitMessagesResponse {
string commit_id = 1;
bytes message = 2;
}
+
+// CheckObjectsExistRequest is a request for the CheckObjectsExist RPC.
+message CheckObjectsExistRequest {
+ // Repository is the repository in which existence of objects and refs
+ // are checked.
+ Repository repository = 1 [(target_repository)=true];
+ // Revisions contains the revisions that shall be checked for existence. This accepts all revisions
+ // as documented in gitrevisions(7)
+ repeated bytes revisions = 2;
+}
+
+message CheckObjectsExistResponse {
+ message RevisionExistence {
+ bytes name = 1;
+ bool exists = 2;
+ };
+
+ repeated RevisionExistence revisions = 1;
+}
diff --git a/proto/go/gitalypb/commit.pb.go b/proto/go/gitalypb/commit.pb.go
index 757137bea..4dd23e043 100644
--- a/proto/go/gitalypb/commit.pb.go
+++ b/proto/go/gitalypb/commit.pb.go
@@ -3401,6 +3401,113 @@ func (x *GetCommitMessagesResponse) GetMessage() []byte {
return nil
}
+// CheckObjectsExistRequest is a request for the CheckObjectsExist RPC.
+type CheckObjectsExistRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Repository is the repository in which existence of objects and refs
+ // are checked.
+ Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
+ // Revisions contains the revisions that shall be checked for existence. This accepts all revisions
+ // as documented in gitrevisions(7)
+ Revisions [][]byte `protobuf:"bytes,2,rep,name=revisions,proto3" json:"revisions,omitempty"`
+}
+
+func (x *CheckObjectsExistRequest) Reset() {
+ *x = CheckObjectsExistRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_commit_proto_msgTypes[47]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CheckObjectsExistRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CheckObjectsExistRequest) ProtoMessage() {}
+
+func (x *CheckObjectsExistRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_commit_proto_msgTypes[47]
+ 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 CheckObjectsExistRequest.ProtoReflect.Descriptor instead.
+func (*CheckObjectsExistRequest) Descriptor() ([]byte, []int) {
+ return file_commit_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *CheckObjectsExistRequest) GetRepository() *Repository {
+ if x != nil {
+ return x.Repository
+ }
+ return nil
+}
+
+func (x *CheckObjectsExistRequest) GetRevisions() [][]byte {
+ if x != nil {
+ return x.Revisions
+ }
+ return nil
+}
+
+type CheckObjectsExistResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Revisions []*CheckObjectsExistResponse_RevisionExistence `protobuf:"bytes,1,rep,name=revisions,proto3" json:"revisions,omitempty"`
+}
+
+func (x *CheckObjectsExistResponse) Reset() {
+ *x = CheckObjectsExistResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_commit_proto_msgTypes[48]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CheckObjectsExistResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CheckObjectsExistResponse) ProtoMessage() {}
+
+func (x *CheckObjectsExistResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_commit_proto_msgTypes[48]
+ 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 CheckObjectsExistResponse.ProtoReflect.Descriptor instead.
+func (*CheckObjectsExistResponse) Descriptor() ([]byte, []int) {
+ return file_commit_proto_rawDescGZIP(), []int{48}
+}
+
+func (x *CheckObjectsExistResponse) GetRevisions() []*CheckObjectsExistResponse_RevisionExistence {
+ if x != nil {
+ return x.Revisions
+ }
+ return nil
+}
+
type ListCommitsByRefNameResponse_CommitForRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3413,7 +3520,7 @@ type ListCommitsByRefNameResponse_CommitForRef struct {
func (x *ListCommitsByRefNameResponse_CommitForRef) Reset() {
*x = ListCommitsByRefNameResponse_CommitForRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_commit_proto_msgTypes[47]
+ mi := &file_commit_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3426,7 +3533,7 @@ func (x *ListCommitsByRefNameResponse_CommitForRef) String() string {
func (*ListCommitsByRefNameResponse_CommitForRef) ProtoMessage() {}
func (x *ListCommitsByRefNameResponse_CommitForRef) ProtoReflect() protoreflect.Message {
- mi := &file_commit_proto_msgTypes[47]
+ mi := &file_commit_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3471,7 +3578,7 @@ type CommitLanguagesResponse_Language struct {
func (x *CommitLanguagesResponse_Language) Reset() {
*x = CommitLanguagesResponse_Language{}
if protoimpl.UnsafeEnabled {
- mi := &file_commit_proto_msgTypes[48]
+ mi := &file_commit_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3484,7 +3591,7 @@ func (x *CommitLanguagesResponse_Language) String() string {
func (*CommitLanguagesResponse_Language) ProtoMessage() {}
func (x *CommitLanguagesResponse_Language) ProtoReflect() protoreflect.Message {
- mi := &file_commit_proto_msgTypes[48]
+ mi := &file_commit_proto_msgTypes[50]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3547,7 +3654,7 @@ type ListLastCommitsForTreeResponse_CommitForTree struct {
func (x *ListLastCommitsForTreeResponse_CommitForTree) Reset() {
*x = ListLastCommitsForTreeResponse_CommitForTree{}
if protoimpl.UnsafeEnabled {
- mi := &file_commit_proto_msgTypes[49]
+ mi := &file_commit_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3560,7 +3667,7 @@ func (x *ListLastCommitsForTreeResponse_CommitForTree) String() string {
func (*ListLastCommitsForTreeResponse_CommitForTree) ProtoMessage() {}
func (x *ListLastCommitsForTreeResponse_CommitForTree) ProtoReflect() protoreflect.Message {
- mi := &file_commit_proto_msgTypes[49]
+ mi := &file_commit_proto_msgTypes[51]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3590,6 +3697,61 @@ func (x *ListLastCommitsForTreeResponse_CommitForTree) GetPathBytes() []byte {
return nil
}
+type CheckObjectsExistResponse_RevisionExistence struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Exists bool `protobuf:"varint,2,opt,name=exists,proto3" json:"exists,omitempty"`
+}
+
+func (x *CheckObjectsExistResponse_RevisionExistence) Reset() {
+ *x = CheckObjectsExistResponse_RevisionExistence{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_commit_proto_msgTypes[52]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CheckObjectsExistResponse_RevisionExistence) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CheckObjectsExistResponse_RevisionExistence) ProtoMessage() {}
+
+func (x *CheckObjectsExistResponse_RevisionExistence) ProtoReflect() protoreflect.Message {
+ mi := &file_commit_proto_msgTypes[52]
+ 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 CheckObjectsExistResponse_RevisionExistence.ProtoReflect.Descriptor instead.
+func (*CheckObjectsExistResponse_RevisionExistence) Descriptor() ([]byte, []int) {
+ return file_commit_proto_rawDescGZIP(), []int{48, 0}
+}
+
+func (x *CheckObjectsExistResponse_RevisionExistence) GetName() []byte {
+ if x != nil {
+ return x.Name
+ }
+ return nil
+}
+
+func (x *CheckObjectsExistResponse_RevisionExistence) GetExists() bool {
+ if x != nil {
+ return x.Exists
+ }
+ return false
+}
+
var File_commit_proto protoreflect.FileDescriptor
var file_commit_proto_rawDesc = []byte{
@@ -4063,139 +4225,164 @@ var file_commit_proto_rawDesc = []byte{
0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x32, 0x8b, 0x10, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c,
- 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43,
- 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06,
- 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
- 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74,
- 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
- 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61,
- 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08,
- 0x02, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41,
- 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
- 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f,
- 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c,
- 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74,
- 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02,
- 0x08, 0x02, 0x12, 0x4a, 0x0a, 0x09, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61,
- 0x6c, 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x51,
- 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1b,
- 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69,
- 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08,
- 0x02, 0x12, 0x6c, 0x0a, 0x15, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67,
- 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74,
- 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69,
- 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44,
+ 0x73, 0x61, 0x67, 0x65, 0x22, 0x72, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 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, 0x1c, 0x0a, 0x09, 0x72, 0x65,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x72,
+ 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x19, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69,
+ 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x61,
+ 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45,
+ 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x76,
+ 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09,
+ 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x52, 0x65, 0x76,
+ 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 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, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x32, 0xf1, 0x10, 0x0a, 0x0d, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0b,
+ 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69,
+ 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x59,
+ 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c,
+ 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x2e,
+ 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41,
+ 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20,
+ 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73,
+ 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4a, 0x0a, 0x09, 0x54, 0x72, 0x65, 0x65,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54,
+ 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02,
+ 0x08, 0x02, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x6c, 0x0a, 0x15, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44,
0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12,
- 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65,
- 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72,
- 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65,
- 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x09, 0x4c, 0x69,
- 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46,
- 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97,
- 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69,
- 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28,
- 0x02, 0x08, 0x02, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61,
- 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
- 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
- 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74,
- 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28,
- 0x02, 0x08, 0x02, 0x12, 0x59, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46,
- 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69,
- 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 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, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e,
- 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
- 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61,
- 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa,
+ 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65,
+ 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
+ 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e,
+ 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01,
- 0x12, 0x5a, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61,
- 0x67, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x47, 0x0a, 0x08,
- 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c,
- 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c,
- 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28,
- 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74,
- 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f,
- 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67,
- 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x71, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c,
- 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65,
- 0x65, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c,
- 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c,
- 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x43, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f,
- 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42,
- 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
- 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x4c,
- 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x12,
- 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x14,
- 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69,
- 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61,
- 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61,
- 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79,
- 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x79, 0x0a, 0x18, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61,
- 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67,
- 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28,
- 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68,
- 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 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,
- 0x28, 0x01, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
- 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69,
- 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69,
- 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
- 0x69, 0x74, 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, 0x62,
- 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74,
- 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47,
- 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
+ 0x12, 0x4a, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x2e,
+ 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a,
+ 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74,
+ 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46,
+ 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c,
+ 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x59, 0x0a, 0x0e, 0x46, 0x69, 0x6e,
+ 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69,
+ 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74,
+ 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
+ 0x74, 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, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e,
+ 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97,
+ 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+ 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61,
+ 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61,
+ 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02,
+ 0x08, 0x02, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x12, 0x17,
+ 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
+ 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x4c,
+ 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68,
+ 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, 0x74,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x71, 0x0a,
+ 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
+ 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01,
+ 0x12, 0x5f, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30,
+ 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x42, 0x79, 0x4f, 0x69, 0x64, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c,
+ 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02,
- 0x30, 0x01, 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,
+ 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+ 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74,
+ 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42,
+ 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12,
+ 0x79, 0x0a, 0x18, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74,
+ 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x69,
+ 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57,
+ 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 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, 0x28, 0x01, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x13, 0x47, 0x65,
+ 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
+ 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47,
+ 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 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, 0x62, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
+ 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61,
+ 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69,
+ 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 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, 0x64, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x20, 0x2e,
+ 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x28, 0x01, 0x30, 0x01, 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 (
@@ -4211,7 +4398,7 @@ func file_commit_proto_rawDescGZIP() []byte {
}
var file_commit_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
-var file_commit_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
+var file_commit_proto_msgTypes = make([]protoimpl.MessageInfo, 53)
var file_commit_proto_goTypes = []interface{}{
(ListCommitsRequest_Order)(0), // 0: gitaly.ListCommitsRequest.Order
(TreeEntryResponse_ObjectType)(0), // 1: gitaly.TreeEntryResponse.ObjectType
@@ -4266,124 +4453,131 @@ var file_commit_proto_goTypes = []interface{}{
(*GetCommitSignaturesResponse)(nil), // 50: gitaly.GetCommitSignaturesResponse
(*GetCommitMessagesRequest)(nil), // 51: gitaly.GetCommitMessagesRequest
(*GetCommitMessagesResponse)(nil), // 52: gitaly.GetCommitMessagesResponse
- (*ListCommitsByRefNameResponse_CommitForRef)(nil), // 53: gitaly.ListCommitsByRefNameResponse.CommitForRef
- (*CommitLanguagesResponse_Language)(nil), // 54: gitaly.CommitLanguagesResponse.Language
- (*ListLastCommitsForTreeResponse_CommitForTree)(nil), // 55: gitaly.ListLastCommitsForTreeResponse.CommitForTree
- (*Repository)(nil), // 56: gitaly.Repository
- (*PaginationParameter)(nil), // 57: gitaly.PaginationParameter
- (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp
- (*GitCommit)(nil), // 59: gitaly.GitCommit
- (*GlobalOptions)(nil), // 60: gitaly.GlobalOptions
- (*PaginationCursor)(nil), // 61: gitaly.PaginationCursor
+ (*CheckObjectsExistRequest)(nil), // 53: gitaly.CheckObjectsExistRequest
+ (*CheckObjectsExistResponse)(nil), // 54: gitaly.CheckObjectsExistResponse
+ (*ListCommitsByRefNameResponse_CommitForRef)(nil), // 55: gitaly.ListCommitsByRefNameResponse.CommitForRef
+ (*CommitLanguagesResponse_Language)(nil), // 56: gitaly.CommitLanguagesResponse.Language
+ (*ListLastCommitsForTreeResponse_CommitForTree)(nil), // 57: gitaly.ListLastCommitsForTreeResponse.CommitForTree
+ (*CheckObjectsExistResponse_RevisionExistence)(nil), // 58: gitaly.CheckObjectsExistResponse.RevisionExistence
+ (*Repository)(nil), // 59: gitaly.Repository
+ (*PaginationParameter)(nil), // 60: gitaly.PaginationParameter
+ (*timestamppb.Timestamp)(nil), // 61: google.protobuf.Timestamp
+ (*GitCommit)(nil), // 62: gitaly.GitCommit
+ (*GlobalOptions)(nil), // 63: gitaly.GlobalOptions
+ (*PaginationCursor)(nil), // 64: gitaly.PaginationCursor
}
var file_commit_proto_depIdxs = []int32{
- 56, // 0: gitaly.ListCommitsRequest.repository:type_name -> gitaly.Repository
- 57, // 1: gitaly.ListCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter
+ 59, // 0: gitaly.ListCommitsRequest.repository:type_name -> gitaly.Repository
+ 60, // 1: gitaly.ListCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter
0, // 2: gitaly.ListCommitsRequest.order:type_name -> gitaly.ListCommitsRequest.Order
- 58, // 3: gitaly.ListCommitsRequest.after:type_name -> google.protobuf.Timestamp
- 58, // 4: gitaly.ListCommitsRequest.before:type_name -> google.protobuf.Timestamp
- 59, // 5: gitaly.ListCommitsResponse.commits:type_name -> gitaly.GitCommit
- 56, // 6: gitaly.ListAllCommitsRequest.repository:type_name -> gitaly.Repository
- 57, // 7: gitaly.ListAllCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter
- 59, // 8: gitaly.ListAllCommitsResponse.commits:type_name -> gitaly.GitCommit
- 56, // 9: gitaly.CommitStatsRequest.repository:type_name -> gitaly.Repository
- 56, // 10: gitaly.CommitIsAncestorRequest.repository:type_name -> gitaly.Repository
- 56, // 11: gitaly.TreeEntryRequest.repository:type_name -> gitaly.Repository
+ 61, // 3: gitaly.ListCommitsRequest.after:type_name -> google.protobuf.Timestamp
+ 61, // 4: gitaly.ListCommitsRequest.before:type_name -> google.protobuf.Timestamp
+ 62, // 5: gitaly.ListCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 59, // 6: gitaly.ListAllCommitsRequest.repository:type_name -> gitaly.Repository
+ 60, // 7: gitaly.ListAllCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter
+ 62, // 8: gitaly.ListAllCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 59, // 9: gitaly.CommitStatsRequest.repository:type_name -> gitaly.Repository
+ 59, // 10: gitaly.CommitIsAncestorRequest.repository:type_name -> gitaly.Repository
+ 59, // 11: gitaly.TreeEntryRequest.repository:type_name -> gitaly.Repository
1, // 12: gitaly.TreeEntryResponse.type:type_name -> gitaly.TreeEntryResponse.ObjectType
- 56, // 13: gitaly.CountCommitsRequest.repository:type_name -> gitaly.Repository
- 58, // 14: gitaly.CountCommitsRequest.after:type_name -> google.protobuf.Timestamp
- 58, // 15: gitaly.CountCommitsRequest.before:type_name -> google.protobuf.Timestamp
- 60, // 16: gitaly.CountCommitsRequest.global_options:type_name -> gitaly.GlobalOptions
- 56, // 17: gitaly.CountDivergingCommitsRequest.repository:type_name -> gitaly.Repository
+ 59, // 13: gitaly.CountCommitsRequest.repository:type_name -> gitaly.Repository
+ 61, // 14: gitaly.CountCommitsRequest.after:type_name -> google.protobuf.Timestamp
+ 61, // 15: gitaly.CountCommitsRequest.before:type_name -> google.protobuf.Timestamp
+ 63, // 16: gitaly.CountCommitsRequest.global_options:type_name -> gitaly.GlobalOptions
+ 59, // 17: gitaly.CountDivergingCommitsRequest.repository:type_name -> gitaly.Repository
2, // 18: gitaly.TreeEntry.type:type_name -> gitaly.TreeEntry.EntryType
- 56, // 19: gitaly.GetTreeEntriesRequest.repository:type_name -> gitaly.Repository
+ 59, // 19: gitaly.GetTreeEntriesRequest.repository:type_name -> gitaly.Repository
3, // 20: gitaly.GetTreeEntriesRequest.sort:type_name -> gitaly.GetTreeEntriesRequest.SortBy
- 57, // 21: gitaly.GetTreeEntriesRequest.pagination_params:type_name -> gitaly.PaginationParameter
+ 60, // 21: gitaly.GetTreeEntriesRequest.pagination_params:type_name -> gitaly.PaginationParameter
20, // 22: gitaly.GetTreeEntriesResponse.entries:type_name -> gitaly.TreeEntry
- 61, // 23: gitaly.GetTreeEntriesResponse.pagination_cursor:type_name -> gitaly.PaginationCursor
- 56, // 24: gitaly.ListFilesRequest.repository:type_name -> gitaly.Repository
- 56, // 25: gitaly.FindCommitRequest.repository:type_name -> gitaly.Repository
- 59, // 26: gitaly.FindCommitResponse.commit:type_name -> gitaly.GitCommit
- 56, // 27: gitaly.ListCommitsByOidRequest.repository:type_name -> gitaly.Repository
- 59, // 28: gitaly.ListCommitsByOidResponse.commits:type_name -> gitaly.GitCommit
- 56, // 29: gitaly.ListCommitsByRefNameRequest.repository:type_name -> gitaly.Repository
- 53, // 30: gitaly.ListCommitsByRefNameResponse.commit_refs:type_name -> gitaly.ListCommitsByRefNameResponse.CommitForRef
- 56, // 31: gitaly.FindAllCommitsRequest.repository:type_name -> gitaly.Repository
+ 64, // 23: gitaly.GetTreeEntriesResponse.pagination_cursor:type_name -> gitaly.PaginationCursor
+ 59, // 24: gitaly.ListFilesRequest.repository:type_name -> gitaly.Repository
+ 59, // 25: gitaly.FindCommitRequest.repository:type_name -> gitaly.Repository
+ 62, // 26: gitaly.FindCommitResponse.commit:type_name -> gitaly.GitCommit
+ 59, // 27: gitaly.ListCommitsByOidRequest.repository:type_name -> gitaly.Repository
+ 62, // 28: gitaly.ListCommitsByOidResponse.commits:type_name -> gitaly.GitCommit
+ 59, // 29: gitaly.ListCommitsByRefNameRequest.repository:type_name -> gitaly.Repository
+ 55, // 30: gitaly.ListCommitsByRefNameResponse.commit_refs:type_name -> gitaly.ListCommitsByRefNameResponse.CommitForRef
+ 59, // 31: gitaly.FindAllCommitsRequest.repository:type_name -> gitaly.Repository
4, // 32: gitaly.FindAllCommitsRequest.order:type_name -> gitaly.FindAllCommitsRequest.Order
- 59, // 33: gitaly.FindAllCommitsResponse.commits:type_name -> gitaly.GitCommit
- 56, // 34: gitaly.FindCommitsRequest.repository:type_name -> gitaly.Repository
- 58, // 35: gitaly.FindCommitsRequest.after:type_name -> google.protobuf.Timestamp
- 58, // 36: gitaly.FindCommitsRequest.before:type_name -> google.protobuf.Timestamp
+ 62, // 33: gitaly.FindAllCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 59, // 34: gitaly.FindCommitsRequest.repository:type_name -> gitaly.Repository
+ 61, // 35: gitaly.FindCommitsRequest.after:type_name -> google.protobuf.Timestamp
+ 61, // 36: gitaly.FindCommitsRequest.before:type_name -> google.protobuf.Timestamp
5, // 37: gitaly.FindCommitsRequest.order:type_name -> gitaly.FindCommitsRequest.Order
- 60, // 38: gitaly.FindCommitsRequest.global_options:type_name -> gitaly.GlobalOptions
- 59, // 39: gitaly.FindCommitsResponse.commits:type_name -> gitaly.GitCommit
- 56, // 40: gitaly.CommitLanguagesRequest.repository:type_name -> gitaly.Repository
- 54, // 41: gitaly.CommitLanguagesResponse.languages:type_name -> gitaly.CommitLanguagesResponse.Language
- 56, // 42: gitaly.RawBlameRequest.repository:type_name -> gitaly.Repository
- 56, // 43: gitaly.LastCommitForPathRequest.repository:type_name -> gitaly.Repository
- 60, // 44: gitaly.LastCommitForPathRequest.global_options:type_name -> gitaly.GlobalOptions
- 59, // 45: gitaly.LastCommitForPathResponse.commit:type_name -> gitaly.GitCommit
- 56, // 46: gitaly.ListLastCommitsForTreeRequest.repository:type_name -> gitaly.Repository
- 60, // 47: gitaly.ListLastCommitsForTreeRequest.global_options:type_name -> gitaly.GlobalOptions
- 55, // 48: gitaly.ListLastCommitsForTreeResponse.commits:type_name -> gitaly.ListLastCommitsForTreeResponse.CommitForTree
- 56, // 49: gitaly.CommitsByMessageRequest.repository:type_name -> gitaly.Repository
- 60, // 50: gitaly.CommitsByMessageRequest.global_options:type_name -> gitaly.GlobalOptions
- 59, // 51: gitaly.CommitsByMessageResponse.commits:type_name -> gitaly.GitCommit
- 56, // 52: gitaly.FilterShasWithSignaturesRequest.repository:type_name -> gitaly.Repository
- 56, // 53: gitaly.ExtractCommitSignatureRequest.repository:type_name -> gitaly.Repository
- 56, // 54: gitaly.GetCommitSignaturesRequest.repository:type_name -> gitaly.Repository
- 56, // 55: gitaly.GetCommitMessagesRequest.repository:type_name -> gitaly.Repository
- 59, // 56: gitaly.ListCommitsByRefNameResponse.CommitForRef.commit:type_name -> gitaly.GitCommit
- 59, // 57: gitaly.ListLastCommitsForTreeResponse.CommitForTree.commit:type_name -> gitaly.GitCommit
- 6, // 58: gitaly.CommitService.ListCommits:input_type -> gitaly.ListCommitsRequest
- 8, // 59: gitaly.CommitService.ListAllCommits:input_type -> gitaly.ListAllCommitsRequest
- 12, // 60: gitaly.CommitService.CommitIsAncestor:input_type -> gitaly.CommitIsAncestorRequest
- 14, // 61: gitaly.CommitService.TreeEntry:input_type -> gitaly.TreeEntryRequest
- 16, // 62: gitaly.CommitService.CountCommits:input_type -> gitaly.CountCommitsRequest
- 18, // 63: gitaly.CommitService.CountDivergingCommits:input_type -> gitaly.CountDivergingCommitsRequest
- 21, // 64: gitaly.CommitService.GetTreeEntries:input_type -> gitaly.GetTreeEntriesRequest
- 23, // 65: gitaly.CommitService.ListFiles:input_type -> gitaly.ListFilesRequest
- 25, // 66: gitaly.CommitService.FindCommit:input_type -> gitaly.FindCommitRequest
- 10, // 67: gitaly.CommitService.CommitStats:input_type -> gitaly.CommitStatsRequest
- 31, // 68: gitaly.CommitService.FindAllCommits:input_type -> gitaly.FindAllCommitsRequest
- 33, // 69: gitaly.CommitService.FindCommits:input_type -> gitaly.FindCommitsRequest
- 35, // 70: gitaly.CommitService.CommitLanguages:input_type -> gitaly.CommitLanguagesRequest
- 37, // 71: gitaly.CommitService.RawBlame:input_type -> gitaly.RawBlameRequest
- 39, // 72: gitaly.CommitService.LastCommitForPath:input_type -> gitaly.LastCommitForPathRequest
- 41, // 73: gitaly.CommitService.ListLastCommitsForTree:input_type -> gitaly.ListLastCommitsForTreeRequest
- 43, // 74: gitaly.CommitService.CommitsByMessage:input_type -> gitaly.CommitsByMessageRequest
- 27, // 75: gitaly.CommitService.ListCommitsByOid:input_type -> gitaly.ListCommitsByOidRequest
- 29, // 76: gitaly.CommitService.ListCommitsByRefName:input_type -> gitaly.ListCommitsByRefNameRequest
- 45, // 77: gitaly.CommitService.FilterShasWithSignatures:input_type -> gitaly.FilterShasWithSignaturesRequest
- 49, // 78: gitaly.CommitService.GetCommitSignatures:input_type -> gitaly.GetCommitSignaturesRequest
- 51, // 79: gitaly.CommitService.GetCommitMessages:input_type -> gitaly.GetCommitMessagesRequest
- 7, // 80: gitaly.CommitService.ListCommits:output_type -> gitaly.ListCommitsResponse
- 9, // 81: gitaly.CommitService.ListAllCommits:output_type -> gitaly.ListAllCommitsResponse
- 13, // 82: gitaly.CommitService.CommitIsAncestor:output_type -> gitaly.CommitIsAncestorResponse
- 15, // 83: gitaly.CommitService.TreeEntry:output_type -> gitaly.TreeEntryResponse
- 17, // 84: gitaly.CommitService.CountCommits:output_type -> gitaly.CountCommitsResponse
- 19, // 85: gitaly.CommitService.CountDivergingCommits:output_type -> gitaly.CountDivergingCommitsResponse
- 22, // 86: gitaly.CommitService.GetTreeEntries:output_type -> gitaly.GetTreeEntriesResponse
- 24, // 87: gitaly.CommitService.ListFiles:output_type -> gitaly.ListFilesResponse
- 26, // 88: gitaly.CommitService.FindCommit:output_type -> gitaly.FindCommitResponse
- 11, // 89: gitaly.CommitService.CommitStats:output_type -> gitaly.CommitStatsResponse
- 32, // 90: gitaly.CommitService.FindAllCommits:output_type -> gitaly.FindAllCommitsResponse
- 34, // 91: gitaly.CommitService.FindCommits:output_type -> gitaly.FindCommitsResponse
- 36, // 92: gitaly.CommitService.CommitLanguages:output_type -> gitaly.CommitLanguagesResponse
- 38, // 93: gitaly.CommitService.RawBlame:output_type -> gitaly.RawBlameResponse
- 40, // 94: gitaly.CommitService.LastCommitForPath:output_type -> gitaly.LastCommitForPathResponse
- 42, // 95: gitaly.CommitService.ListLastCommitsForTree:output_type -> gitaly.ListLastCommitsForTreeResponse
- 44, // 96: gitaly.CommitService.CommitsByMessage:output_type -> gitaly.CommitsByMessageResponse
- 28, // 97: gitaly.CommitService.ListCommitsByOid:output_type -> gitaly.ListCommitsByOidResponse
- 30, // 98: gitaly.CommitService.ListCommitsByRefName:output_type -> gitaly.ListCommitsByRefNameResponse
- 46, // 99: gitaly.CommitService.FilterShasWithSignatures:output_type -> gitaly.FilterShasWithSignaturesResponse
- 50, // 100: gitaly.CommitService.GetCommitSignatures:output_type -> gitaly.GetCommitSignaturesResponse
- 52, // 101: gitaly.CommitService.GetCommitMessages:output_type -> gitaly.GetCommitMessagesResponse
- 80, // [80:102] is the sub-list for method output_type
- 58, // [58:80] is the sub-list for method input_type
- 58, // [58:58] is the sub-list for extension type_name
- 58, // [58:58] is the sub-list for extension extendee
- 0, // [0:58] is the sub-list for field type_name
+ 63, // 38: gitaly.FindCommitsRequest.global_options:type_name -> gitaly.GlobalOptions
+ 62, // 39: gitaly.FindCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 59, // 40: gitaly.CommitLanguagesRequest.repository:type_name -> gitaly.Repository
+ 56, // 41: gitaly.CommitLanguagesResponse.languages:type_name -> gitaly.CommitLanguagesResponse.Language
+ 59, // 42: gitaly.RawBlameRequest.repository:type_name -> gitaly.Repository
+ 59, // 43: gitaly.LastCommitForPathRequest.repository:type_name -> gitaly.Repository
+ 63, // 44: gitaly.LastCommitForPathRequest.global_options:type_name -> gitaly.GlobalOptions
+ 62, // 45: gitaly.LastCommitForPathResponse.commit:type_name -> gitaly.GitCommit
+ 59, // 46: gitaly.ListLastCommitsForTreeRequest.repository:type_name -> gitaly.Repository
+ 63, // 47: gitaly.ListLastCommitsForTreeRequest.global_options:type_name -> gitaly.GlobalOptions
+ 57, // 48: gitaly.ListLastCommitsForTreeResponse.commits:type_name -> gitaly.ListLastCommitsForTreeResponse.CommitForTree
+ 59, // 49: gitaly.CommitsByMessageRequest.repository:type_name -> gitaly.Repository
+ 63, // 50: gitaly.CommitsByMessageRequest.global_options:type_name -> gitaly.GlobalOptions
+ 62, // 51: gitaly.CommitsByMessageResponse.commits:type_name -> gitaly.GitCommit
+ 59, // 52: gitaly.FilterShasWithSignaturesRequest.repository:type_name -> gitaly.Repository
+ 59, // 53: gitaly.ExtractCommitSignatureRequest.repository:type_name -> gitaly.Repository
+ 59, // 54: gitaly.GetCommitSignaturesRequest.repository:type_name -> gitaly.Repository
+ 59, // 55: gitaly.GetCommitMessagesRequest.repository:type_name -> gitaly.Repository
+ 59, // 56: gitaly.CheckObjectsExistRequest.repository:type_name -> gitaly.Repository
+ 58, // 57: gitaly.CheckObjectsExistResponse.revisions:type_name -> gitaly.CheckObjectsExistResponse.RevisionExistence
+ 62, // 58: gitaly.ListCommitsByRefNameResponse.CommitForRef.commit:type_name -> gitaly.GitCommit
+ 62, // 59: gitaly.ListLastCommitsForTreeResponse.CommitForTree.commit:type_name -> gitaly.GitCommit
+ 6, // 60: gitaly.CommitService.ListCommits:input_type -> gitaly.ListCommitsRequest
+ 8, // 61: gitaly.CommitService.ListAllCommits:input_type -> gitaly.ListAllCommitsRequest
+ 12, // 62: gitaly.CommitService.CommitIsAncestor:input_type -> gitaly.CommitIsAncestorRequest
+ 14, // 63: gitaly.CommitService.TreeEntry:input_type -> gitaly.TreeEntryRequest
+ 16, // 64: gitaly.CommitService.CountCommits:input_type -> gitaly.CountCommitsRequest
+ 18, // 65: gitaly.CommitService.CountDivergingCommits:input_type -> gitaly.CountDivergingCommitsRequest
+ 21, // 66: gitaly.CommitService.GetTreeEntries:input_type -> gitaly.GetTreeEntriesRequest
+ 23, // 67: gitaly.CommitService.ListFiles:input_type -> gitaly.ListFilesRequest
+ 25, // 68: gitaly.CommitService.FindCommit:input_type -> gitaly.FindCommitRequest
+ 10, // 69: gitaly.CommitService.CommitStats:input_type -> gitaly.CommitStatsRequest
+ 31, // 70: gitaly.CommitService.FindAllCommits:input_type -> gitaly.FindAllCommitsRequest
+ 33, // 71: gitaly.CommitService.FindCommits:input_type -> gitaly.FindCommitsRequest
+ 35, // 72: gitaly.CommitService.CommitLanguages:input_type -> gitaly.CommitLanguagesRequest
+ 37, // 73: gitaly.CommitService.RawBlame:input_type -> gitaly.RawBlameRequest
+ 39, // 74: gitaly.CommitService.LastCommitForPath:input_type -> gitaly.LastCommitForPathRequest
+ 41, // 75: gitaly.CommitService.ListLastCommitsForTree:input_type -> gitaly.ListLastCommitsForTreeRequest
+ 43, // 76: gitaly.CommitService.CommitsByMessage:input_type -> gitaly.CommitsByMessageRequest
+ 27, // 77: gitaly.CommitService.ListCommitsByOid:input_type -> gitaly.ListCommitsByOidRequest
+ 29, // 78: gitaly.CommitService.ListCommitsByRefName:input_type -> gitaly.ListCommitsByRefNameRequest
+ 45, // 79: gitaly.CommitService.FilterShasWithSignatures:input_type -> gitaly.FilterShasWithSignaturesRequest
+ 49, // 80: gitaly.CommitService.GetCommitSignatures:input_type -> gitaly.GetCommitSignaturesRequest
+ 51, // 81: gitaly.CommitService.GetCommitMessages:input_type -> gitaly.GetCommitMessagesRequest
+ 53, // 82: gitaly.CommitService.CheckObjectsExist:input_type -> gitaly.CheckObjectsExistRequest
+ 7, // 83: gitaly.CommitService.ListCommits:output_type -> gitaly.ListCommitsResponse
+ 9, // 84: gitaly.CommitService.ListAllCommits:output_type -> gitaly.ListAllCommitsResponse
+ 13, // 85: gitaly.CommitService.CommitIsAncestor:output_type -> gitaly.CommitIsAncestorResponse
+ 15, // 86: gitaly.CommitService.TreeEntry:output_type -> gitaly.TreeEntryResponse
+ 17, // 87: gitaly.CommitService.CountCommits:output_type -> gitaly.CountCommitsResponse
+ 19, // 88: gitaly.CommitService.CountDivergingCommits:output_type -> gitaly.CountDivergingCommitsResponse
+ 22, // 89: gitaly.CommitService.GetTreeEntries:output_type -> gitaly.GetTreeEntriesResponse
+ 24, // 90: gitaly.CommitService.ListFiles:output_type -> gitaly.ListFilesResponse
+ 26, // 91: gitaly.CommitService.FindCommit:output_type -> gitaly.FindCommitResponse
+ 11, // 92: gitaly.CommitService.CommitStats:output_type -> gitaly.CommitStatsResponse
+ 32, // 93: gitaly.CommitService.FindAllCommits:output_type -> gitaly.FindAllCommitsResponse
+ 34, // 94: gitaly.CommitService.FindCommits:output_type -> gitaly.FindCommitsResponse
+ 36, // 95: gitaly.CommitService.CommitLanguages:output_type -> gitaly.CommitLanguagesResponse
+ 38, // 96: gitaly.CommitService.RawBlame:output_type -> gitaly.RawBlameResponse
+ 40, // 97: gitaly.CommitService.LastCommitForPath:output_type -> gitaly.LastCommitForPathResponse
+ 42, // 98: gitaly.CommitService.ListLastCommitsForTree:output_type -> gitaly.ListLastCommitsForTreeResponse
+ 44, // 99: gitaly.CommitService.CommitsByMessage:output_type -> gitaly.CommitsByMessageResponse
+ 28, // 100: gitaly.CommitService.ListCommitsByOid:output_type -> gitaly.ListCommitsByOidResponse
+ 30, // 101: gitaly.CommitService.ListCommitsByRefName:output_type -> gitaly.ListCommitsByRefNameResponse
+ 46, // 102: gitaly.CommitService.FilterShasWithSignatures:output_type -> gitaly.FilterShasWithSignaturesResponse
+ 50, // 103: gitaly.CommitService.GetCommitSignatures:output_type -> gitaly.GetCommitSignaturesResponse
+ 52, // 104: gitaly.CommitService.GetCommitMessages:output_type -> gitaly.GetCommitMessagesResponse
+ 54, // 105: gitaly.CommitService.CheckObjectsExist:output_type -> gitaly.CheckObjectsExistResponse
+ 83, // [83:106] is the sub-list for method output_type
+ 60, // [60:83] is the sub-list for method input_type
+ 60, // [60:60] is the sub-list for extension type_name
+ 60, // [60:60] is the sub-list for extension extendee
+ 0, // [0:60] is the sub-list for field type_name
}
func init() { file_commit_proto_init() }
@@ -4959,7 +5153,7 @@ func file_commit_proto_init() {
}
}
file_commit_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListCommitsByRefNameResponse_CommitForRef); i {
+ switch v := v.(*CheckObjectsExistRequest); i {
case 0:
return &v.state
case 1:
@@ -4971,7 +5165,7 @@ func file_commit_proto_init() {
}
}
file_commit_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CommitLanguagesResponse_Language); i {
+ switch v := v.(*CheckObjectsExistResponse); i {
case 0:
return &v.state
case 1:
@@ -4983,6 +5177,30 @@ func file_commit_proto_init() {
}
}
file_commit_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListCommitsByRefNameResponse_CommitForRef); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_commit_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CommitLanguagesResponse_Language); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_commit_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListLastCommitsForTreeResponse_CommitForTree); i {
case 0:
return &v.state
@@ -4994,6 +5212,18 @@ func file_commit_proto_init() {
return nil
}
}
+ file_commit_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CheckObjectsExistResponse_RevisionExistence); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -5001,7 +5231,7 @@ func file_commit_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_commit_proto_rawDesc,
NumEnums: 6,
- NumMessages: 50,
+ NumMessages: 53,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/proto/go/gitalypb/commit_grpc.pb.go b/proto/go/gitalypb/commit_grpc.pb.go
index 172f63975..0e1f603bd 100644
--- a/proto/go/gitalypb/commit_grpc.pb.go
+++ b/proto/go/gitalypb/commit_grpc.pb.go
@@ -46,6 +46,11 @@ type CommitServiceClient interface {
FilterShasWithSignatures(ctx context.Context, opts ...grpc.CallOption) (CommitService_FilterShasWithSignaturesClient, error)
GetCommitSignatures(ctx context.Context, in *GetCommitSignaturesRequest, opts ...grpc.CallOption) (CommitService_GetCommitSignaturesClient, error)
GetCommitMessages(ctx context.Context, in *GetCommitMessagesRequest, opts ...grpc.CallOption) (CommitService_GetCommitMessagesClient, error)
+ // CheckObjectsExist will check for the existence of revisions against a
+ // repository. It returns two sets of data. An array containing the revisions
+ // fromm the input that it found on the repository, and an array that contains all
+ // revisions from the input it did not find on the repository.
+ CheckObjectsExist(ctx context.Context, opts ...grpc.CallOption) (CommitService_CheckObjectsExistClient, error)
}
type commitServiceClient struct {
@@ -598,6 +603,37 @@ func (x *commitServiceGetCommitMessagesClient) Recv() (*GetCommitMessagesRespons
return m, nil
}
+func (c *commitServiceClient) CheckObjectsExist(ctx context.Context, opts ...grpc.CallOption) (CommitService_CheckObjectsExistClient, error) {
+ stream, err := c.cc.NewStream(ctx, &CommitService_ServiceDesc.Streams[15], "/gitaly.CommitService/CheckObjectsExist", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &commitServiceCheckObjectsExistClient{stream}
+ return x, nil
+}
+
+type CommitService_CheckObjectsExistClient interface {
+ Send(*CheckObjectsExistRequest) error
+ Recv() (*CheckObjectsExistResponse, error)
+ grpc.ClientStream
+}
+
+type commitServiceCheckObjectsExistClient struct {
+ grpc.ClientStream
+}
+
+func (x *commitServiceCheckObjectsExistClient) Send(m *CheckObjectsExistRequest) error {
+ return x.ClientStream.SendMsg(m)
+}
+
+func (x *commitServiceCheckObjectsExistClient) Recv() (*CheckObjectsExistResponse, error) {
+ m := new(CheckObjectsExistResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
// CommitServiceServer is the server API for CommitService service.
// All implementations must embed UnimplementedCommitServiceServer
// for forward compatibility
@@ -630,6 +666,11 @@ type CommitServiceServer interface {
FilterShasWithSignatures(CommitService_FilterShasWithSignaturesServer) error
GetCommitSignatures(*GetCommitSignaturesRequest, CommitService_GetCommitSignaturesServer) error
GetCommitMessages(*GetCommitMessagesRequest, CommitService_GetCommitMessagesServer) error
+ // CheckObjectsExist will check for the existence of revisions against a
+ // repository. It returns two sets of data. An array containing the revisions
+ // fromm the input that it found on the repository, and an array that contains all
+ // revisions from the input it did not find on the repository.
+ CheckObjectsExist(CommitService_CheckObjectsExistServer) error
mustEmbedUnimplementedCommitServiceServer()
}
@@ -703,6 +744,9 @@ func (UnimplementedCommitServiceServer) GetCommitSignatures(*GetCommitSignatures
func (UnimplementedCommitServiceServer) GetCommitMessages(*GetCommitMessagesRequest, CommitService_GetCommitMessagesServer) error {
return status.Errorf(codes.Unimplemented, "method GetCommitMessages not implemented")
}
+func (UnimplementedCommitServiceServer) CheckObjectsExist(CommitService_CheckObjectsExistServer) error {
+ return status.Errorf(codes.Unimplemented, "method CheckObjectsExist not implemented")
+}
func (UnimplementedCommitServiceServer) mustEmbedUnimplementedCommitServiceServer() {}
// UnsafeCommitServiceServer may be embedded to opt out of forward compatibility for this service.
@@ -1162,6 +1206,32 @@ func (x *commitServiceGetCommitMessagesServer) Send(m *GetCommitMessagesResponse
return x.ServerStream.SendMsg(m)
}
+func _CommitService_CheckObjectsExist_Handler(srv interface{}, stream grpc.ServerStream) error {
+ return srv.(CommitServiceServer).CheckObjectsExist(&commitServiceCheckObjectsExistServer{stream})
+}
+
+type CommitService_CheckObjectsExistServer interface {
+ Send(*CheckObjectsExistResponse) error
+ Recv() (*CheckObjectsExistRequest, error)
+ grpc.ServerStream
+}
+
+type commitServiceCheckObjectsExistServer struct {
+ grpc.ServerStream
+}
+
+func (x *commitServiceCheckObjectsExistServer) Send(m *CheckObjectsExistResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func (x *commitServiceCheckObjectsExistServer) Recv() (*CheckObjectsExistRequest, error) {
+ m := new(CheckObjectsExistRequest)
+ if err := x.ServerStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
// CommitService_ServiceDesc is the grpc.ServiceDesc for CommitService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -1275,6 +1345,12 @@ var CommitService_ServiceDesc = grpc.ServiceDesc{
Handler: _CommitService_GetCommitMessages_Handler,
ServerStreams: true,
},
+ {
+ StreamName: "CheckObjectsExist",
+ Handler: _CommitService_CheckObjectsExist_Handler,
+ ServerStreams: true,
+ ClientStreams: true,
+ },
},
Metadata: "commit.proto",
}
diff --git a/ruby/proto/gitaly/commit_pb.rb b/ruby/proto/gitaly/commit_pb.rb
index eda85ab80..1e331cd1f 100644
--- a/ruby/proto/gitaly/commit_pb.rb
+++ b/ruby/proto/gitaly/commit_pb.rb
@@ -293,6 +293,17 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
optional :commit_id, :string, 1
optional :message, :bytes, 2
end
+ add_message "gitaly.CheckObjectsExistRequest" do
+ optional :repository, :message, 1, "gitaly.Repository"
+ repeated :revisions, :bytes, 2
+ end
+ add_message "gitaly.CheckObjectsExistResponse" do
+ repeated :revisions, :message, 1, "gitaly.CheckObjectsExistResponse.RevisionExistence"
+ end
+ add_message "gitaly.CheckObjectsExistResponse.RevisionExistence" do
+ optional :name, :bytes, 1
+ optional :exists, :bool, 2
+ end
end
end
@@ -353,4 +364,7 @@ module Gitaly
GetCommitSignaturesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.GetCommitSignaturesResponse").msgclass
GetCommitMessagesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.GetCommitMessagesRequest").msgclass
GetCommitMessagesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.GetCommitMessagesResponse").msgclass
+ CheckObjectsExistRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.CheckObjectsExistRequest").msgclass
+ CheckObjectsExistResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.CheckObjectsExistResponse").msgclass
+ CheckObjectsExistResponse::RevisionExistence = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("gitaly.CheckObjectsExistResponse.RevisionExistence").msgclass
end
diff --git a/ruby/proto/gitaly/commit_services_pb.rb b/ruby/proto/gitaly/commit_services_pb.rb
index 4d5f88641..131f84122 100644
--- a/ruby/proto/gitaly/commit_services_pb.rb
+++ b/ruby/proto/gitaly/commit_services_pb.rb
@@ -42,6 +42,11 @@ module Gitaly
rpc :FilterShasWithSignatures, stream(::Gitaly::FilterShasWithSignaturesRequest), stream(::Gitaly::FilterShasWithSignaturesResponse)
rpc :GetCommitSignatures, ::Gitaly::GetCommitSignaturesRequest, stream(::Gitaly::GetCommitSignaturesResponse)
rpc :GetCommitMessages, ::Gitaly::GetCommitMessagesRequest, stream(::Gitaly::GetCommitMessagesResponse)
+ # CheckObjectsExist will check for the existence of revisions against a
+ # repository. It returns two sets of data. An array containing the revisions
+ # fromm the input that it found on the repository, and an array that contains all
+ # revisions from the input it did not find on the repository.
+ rpc :CheckObjectsExist, stream(::Gitaly::CheckObjectsExistRequest), stream(::Gitaly::CheckObjectsExistResponse)
end
Stub = Service.rpc_stub_class