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:
authorJohn Cai <jcai@gitlab.com>2022-03-30 03:08:57 +0300
committerJohn Cai <jcai@gitlab.com>2022-03-31 23:14:19 +0300
commit0072c7f30ff7b78991d88148da64fdd7e663b6df (patch)
tree823b82f5c7cfa891c798b6c59fceae9747bf69bd
parentf319294b959b4cb8e9a35a330d3831c1216029f7 (diff)
commit: Add CheckObjectsExist RPCjc-filter-nonexisting-revisions
When pushing commits to a repository, access checks are run. In order to use the quarantine directory, we need a way to filter out revisions that a repository already has in the case that a packfile sends over objects that already exists on the server. In this case, we don't need to check the access. Add an RPC that when given a list of revisions, returns the ones that already exist in the repository, and the ones that do not exist in the repository. Changelog: added
-rw-r--r--internal/gitaly/service/commit/check_objects_exist.go88
-rw-r--r--internal/gitaly/service/commit/check_objects_exist_test.go117
-rw-r--r--proto/commit.proto27
-rw-r--r--proto/go/gitalypb/commit.pb.go663
-rw-r--r--proto/go/gitalypb/commit_grpc.pb.go76
-rw-r--r--ruby/proto/gitaly/commit_pb.rb10
-rw-r--r--ruby/proto/gitaly/commit_services_pb.rb5
7 files changed, 738 insertions, 248 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..1d15730e8
--- /dev/null
+++ b/internal/gitaly/service/commit/check_objects_exist.go
@@ -0,0 +1,88 @@
+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/proto/go/gitalypb"
+)
+
+func (s *server) CheckObjectsExist(
+ stream gitalypb.CommitService_CheckObjectsExistServer,
+) error {
+ ctx := stream.Context()
+ firstRequest := true
+ var objectInfoReader catfile.ObjectInfoReader
+ var request *gitalypb.CheckObjectsExistRequest
+
+ for {
+ request, err := stream.Recv()
+ if err != nil {
+ if err == io.EOF {
+ break
+ }
+ return err
+ }
+
+ if firstRequest {
+ firstRequest = false
+ if err := validateCheckObjectsExistRequest(request); err != nil {
+ return err
+ }
+
+ repo := s.localrepo(request.GetRepository())
+
+ if objectInfoReader, err = s.catfileCache.ObjectInfoReader(ctx, repo); err != nil {
+ return err
+ }
+ }
+
+ if err = checkObjectsExist(ctx, request, objectInfoReader, stream); err != nil {
+ return err
+ }
+ }
+
+ return checkObjectsExist(ctx, request, objectInfoReader, stream)
+}
+
+func checkObjectsExist(
+ ctx context.Context,
+ request *gitalypb.CheckObjectsExistRequest,
+ objectInfoReader catfile.ObjectInfoReader,
+ stream gitalypb.CommitService_CheckObjectsExistServer,
+) error {
+ var existingRevisions, missingRevisions [][]byte
+
+ revisions := request.GetRevisions()
+
+ for _, revision := range revisions {
+ _, err := objectInfoReader.Info(ctx, git.Revision(revision))
+ if err != nil {
+ if catfile.IsNotFound(err) {
+ missingRevisions = append(missingRevisions, revision)
+ continue
+ }
+
+ return err
+ }
+ existingRevisions = append(existingRevisions, revision)
+ }
+
+ return stream.Send(&gitalypb.CheckObjectsExistResponse{
+ ExistingRevisions: existingRevisions,
+ MissingRevisions: missingRevisions,
+ })
+}
+
+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..518559ba9
--- /dev/null
+++ b/internal/gitaly/service/commit/check_objects_exist_test.go
@@ -0,0 +1,117 @@
+package commit
+
+import (
+ "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 TestListExistingObjects(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
+ expectedExists [][]byte
+ expectedMissing [][]byte
+ returnCode codes.Code
+ }{
+ {
+ desc: "commit ids and refs that exist",
+ input: [][]byte{
+ []byte(commitID1),
+ []byte("master"),
+ []byte(commitID2),
+ []byte(commitID3),
+ []byte("feature"),
+ },
+ expectedExists: [][]byte{
+ []byte(commitID1),
+ []byte("master"),
+ []byte(commitID2),
+ []byte(commitID3),
+ []byte("feature"),
+ },
+ 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),
+ },
+ expectedExists: [][]byte{
+ []byte(commitID1),
+ []byte("master"),
+ []byte(commitID2),
+ []byte(commitID3),
+ []byte("feature"),
+ },
+ expectedMissing: [][]byte{
+ []byte("many_files"),
+ []byte(nonexistingObject),
+ },
+ returnCode: codes.OK,
+ },
+ {
+ desc: "empty input",
+ input: [][]byte{},
+ returnCode: codes.OK,
+ },
+ {
+ 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())
+
+ resp, err := c.Recv()
+ if tc.returnCode != codes.OK {
+ testhelper.RequireGrpcCode(t, err, tc.returnCode)
+ } else {
+ require.NoError(t, err)
+ }
+
+ assert.Equal(t, tc.expectedExists, resp.GetExistingRevisions())
+ assert.Equal(t, tc.expectedMissing, resp.GetMissingRevisions())
+ })
+ }
+}
diff --git a/proto/commit.proto b/proto/commit.proto
index 4c9f3fe1d..d0d320296 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.
@@ -562,3 +572,20 @@ 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 {
+ // ExistingRevisions are revisions that exist in the repository
+ repeated bytes existing_revisions = 1;
+ // MissingRevisions are revisions that do not exist in the repository
+ repeated bytes missing_revisions = 2;
+}
diff --git a/proto/go/gitalypb/commit.pb.go b/proto/go/gitalypb/commit.pb.go
index 3b9eccbad..a535abca3 100644
--- a/proto/go/gitalypb/commit.pb.go
+++ b/proto/go/gitalypb/commit.pb.go
@@ -3391,6 +3391,123 @@ 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
+
+ // ExistingRevisions are revisions that exist in the repository
+ ExistingRevisions [][]byte `protobuf:"bytes,1,rep,name=existing_revisions,json=existingRevisions,proto3" json:"existing_revisions,omitempty"`
+ // MissingRevisions are revisions that do not exist in the repository
+ MissingRevisions [][]byte `protobuf:"bytes,2,rep,name=missing_revisions,json=missingRevisions,proto3" json:"missing_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) GetExistingRevisions() [][]byte {
+ if x != nil {
+ return x.ExistingRevisions
+ }
+ return nil
+}
+
+func (x *CheckObjectsExistResponse) GetMissingRevisions() [][]byte {
+ if x != nil {
+ return x.MissingRevisions
+ }
+ return nil
+}
+
type ListCommitsByRefNameResponse_CommitForRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3403,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)
}
@@ -3416,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 {
@@ -3461,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)
}
@@ -3474,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 {
@@ -3537,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)
}
@@ -3550,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 {
@@ -4051,140 +4168,161 @@ var file_commit_proto_rawDesc = []byte{
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 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, 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,
+ 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 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, 0x77, 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, 0x2d,
+ 0x0a, 0x12, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x11, 0x65, 0x78, 0x69, 0x73,
+ 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a,
+ 0x11, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e,
+ 0x67, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 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, 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,
+ 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, 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,
+ 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, 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, 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,
- 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,
+ 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, 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, 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,
+ 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 (
@@ -4200,7 +4338,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, 52)
var file_commit_proto_goTypes = []interface{}{
(ListCommitsRequest_Order)(0), // 0: gitaly.ListCommitsRequest.Order
(TreeEntryResponse_ObjectType)(0), // 1: gitaly.TreeEntryResponse.ObjectType
@@ -4255,124 +4393,129 @@ 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
+ (*Repository)(nil), // 58: gitaly.Repository
+ (*PaginationParameter)(nil), // 59: gitaly.PaginationParameter
+ (*timestamppb.Timestamp)(nil), // 60: google.protobuf.Timestamp
+ (*GitCommit)(nil), // 61: gitaly.GitCommit
+ (*GlobalOptions)(nil), // 62: gitaly.GlobalOptions
+ (*PaginationCursor)(nil), // 63: 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
+ 58, // 0: gitaly.ListCommitsRequest.repository:type_name -> gitaly.Repository
+ 59, // 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
+ 60, // 3: gitaly.ListCommitsRequest.after:type_name -> google.protobuf.Timestamp
+ 60, // 4: gitaly.ListCommitsRequest.before:type_name -> google.protobuf.Timestamp
+ 61, // 5: gitaly.ListCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 58, // 6: gitaly.ListAllCommitsRequest.repository:type_name -> gitaly.Repository
+ 59, // 7: gitaly.ListAllCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter
+ 61, // 8: gitaly.ListAllCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 58, // 9: gitaly.CommitStatsRequest.repository:type_name -> gitaly.Repository
+ 58, // 10: gitaly.CommitIsAncestorRequest.repository:type_name -> gitaly.Repository
+ 58, // 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
+ 58, // 13: gitaly.CountCommitsRequest.repository:type_name -> gitaly.Repository
+ 60, // 14: gitaly.CountCommitsRequest.after:type_name -> google.protobuf.Timestamp
+ 60, // 15: gitaly.CountCommitsRequest.before:type_name -> google.protobuf.Timestamp
+ 62, // 16: gitaly.CountCommitsRequest.global_options:type_name -> gitaly.GlobalOptions
+ 58, // 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
+ 58, // 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
+ 59, // 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
+ 63, // 23: gitaly.GetTreeEntriesResponse.pagination_cursor:type_name -> gitaly.PaginationCursor
+ 58, // 24: gitaly.ListFilesRequest.repository:type_name -> gitaly.Repository
+ 58, // 25: gitaly.FindCommitRequest.repository:type_name -> gitaly.Repository
+ 61, // 26: gitaly.FindCommitResponse.commit:type_name -> gitaly.GitCommit
+ 58, // 27: gitaly.ListCommitsByOidRequest.repository:type_name -> gitaly.Repository
+ 61, // 28: gitaly.ListCommitsByOidResponse.commits:type_name -> gitaly.GitCommit
+ 58, // 29: gitaly.ListCommitsByRefNameRequest.repository:type_name -> gitaly.Repository
+ 55, // 30: gitaly.ListCommitsByRefNameResponse.commit_refs:type_name -> gitaly.ListCommitsByRefNameResponse.CommitForRef
+ 58, // 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
+ 61, // 33: gitaly.FindAllCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 58, // 34: gitaly.FindCommitsRequest.repository:type_name -> gitaly.Repository
+ 60, // 35: gitaly.FindCommitsRequest.after:type_name -> google.protobuf.Timestamp
+ 60, // 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
+ 62, // 38: gitaly.FindCommitsRequest.global_options:type_name -> gitaly.GlobalOptions
+ 61, // 39: gitaly.FindCommitsResponse.commits:type_name -> gitaly.GitCommit
+ 58, // 40: gitaly.CommitLanguagesRequest.repository:type_name -> gitaly.Repository
+ 56, // 41: gitaly.CommitLanguagesResponse.languages:type_name -> gitaly.CommitLanguagesResponse.Language
+ 58, // 42: gitaly.RawBlameRequest.repository:type_name -> gitaly.Repository
+ 58, // 43: gitaly.LastCommitForPathRequest.repository:type_name -> gitaly.Repository
+ 62, // 44: gitaly.LastCommitForPathRequest.global_options:type_name -> gitaly.GlobalOptions
+ 61, // 45: gitaly.LastCommitForPathResponse.commit:type_name -> gitaly.GitCommit
+ 58, // 46: gitaly.ListLastCommitsForTreeRequest.repository:type_name -> gitaly.Repository
+ 62, // 47: gitaly.ListLastCommitsForTreeRequest.global_options:type_name -> gitaly.GlobalOptions
+ 57, // 48: gitaly.ListLastCommitsForTreeResponse.commits:type_name -> gitaly.ListLastCommitsForTreeResponse.CommitForTree
+ 58, // 49: gitaly.CommitsByMessageRequest.repository:type_name -> gitaly.Repository
+ 62, // 50: gitaly.CommitsByMessageRequest.global_options:type_name -> gitaly.GlobalOptions
+ 61, // 51: gitaly.CommitsByMessageResponse.commits:type_name -> gitaly.GitCommit
+ 58, // 52: gitaly.FilterShasWithSignaturesRequest.repository:type_name -> gitaly.Repository
+ 58, // 53: gitaly.ExtractCommitSignatureRequest.repository:type_name -> gitaly.Repository
+ 58, // 54: gitaly.GetCommitSignaturesRequest.repository:type_name -> gitaly.Repository
+ 58, // 55: gitaly.GetCommitMessagesRequest.repository:type_name -> gitaly.Repository
+ 58, // 56: gitaly.CheckObjectsExistRequest.repository:type_name -> gitaly.Repository
+ 61, // 57: gitaly.ListCommitsByRefNameResponse.CommitForRef.commit:type_name -> gitaly.GitCommit
+ 61, // 58: gitaly.ListLastCommitsForTreeResponse.CommitForTree.commit:type_name -> gitaly.GitCommit
+ 6, // 59: gitaly.CommitService.ListCommits:input_type -> gitaly.ListCommitsRequest
+ 8, // 60: gitaly.CommitService.ListAllCommits:input_type -> gitaly.ListAllCommitsRequest
+ 12, // 61: gitaly.CommitService.CommitIsAncestor:input_type -> gitaly.CommitIsAncestorRequest
+ 14, // 62: gitaly.CommitService.TreeEntry:input_type -> gitaly.TreeEntryRequest
+ 16, // 63: gitaly.CommitService.CountCommits:input_type -> gitaly.CountCommitsRequest
+ 18, // 64: gitaly.CommitService.CountDivergingCommits:input_type -> gitaly.CountDivergingCommitsRequest
+ 21, // 65: gitaly.CommitService.GetTreeEntries:input_type -> gitaly.GetTreeEntriesRequest
+ 23, // 66: gitaly.CommitService.ListFiles:input_type -> gitaly.ListFilesRequest
+ 25, // 67: gitaly.CommitService.FindCommit:input_type -> gitaly.FindCommitRequest
+ 10, // 68: gitaly.CommitService.CommitStats:input_type -> gitaly.CommitStatsRequest
+ 31, // 69: gitaly.CommitService.FindAllCommits:input_type -> gitaly.FindAllCommitsRequest
+ 33, // 70: gitaly.CommitService.FindCommits:input_type -> gitaly.FindCommitsRequest
+ 35, // 71: gitaly.CommitService.CommitLanguages:input_type -> gitaly.CommitLanguagesRequest
+ 37, // 72: gitaly.CommitService.RawBlame:input_type -> gitaly.RawBlameRequest
+ 39, // 73: gitaly.CommitService.LastCommitForPath:input_type -> gitaly.LastCommitForPathRequest
+ 41, // 74: gitaly.CommitService.ListLastCommitsForTree:input_type -> gitaly.ListLastCommitsForTreeRequest
+ 43, // 75: gitaly.CommitService.CommitsByMessage:input_type -> gitaly.CommitsByMessageRequest
+ 27, // 76: gitaly.CommitService.ListCommitsByOid:input_type -> gitaly.ListCommitsByOidRequest
+ 29, // 77: gitaly.CommitService.ListCommitsByRefName:input_type -> gitaly.ListCommitsByRefNameRequest
+ 45, // 78: gitaly.CommitService.FilterShasWithSignatures:input_type -> gitaly.FilterShasWithSignaturesRequest
+ 49, // 79: gitaly.CommitService.GetCommitSignatures:input_type -> gitaly.GetCommitSignaturesRequest
+ 51, // 80: gitaly.CommitService.GetCommitMessages:input_type -> gitaly.GetCommitMessagesRequest
+ 53, // 81: gitaly.CommitService.CheckObjectsExist:input_type -> gitaly.CheckObjectsExistRequest
+ 7, // 82: gitaly.CommitService.ListCommits:output_type -> gitaly.ListCommitsResponse
+ 9, // 83: gitaly.CommitService.ListAllCommits:output_type -> gitaly.ListAllCommitsResponse
+ 13, // 84: gitaly.CommitService.CommitIsAncestor:output_type -> gitaly.CommitIsAncestorResponse
+ 15, // 85: gitaly.CommitService.TreeEntry:output_type -> gitaly.TreeEntryResponse
+ 17, // 86: gitaly.CommitService.CountCommits:output_type -> gitaly.CountCommitsResponse
+ 19, // 87: gitaly.CommitService.CountDivergingCommits:output_type -> gitaly.CountDivergingCommitsResponse
+ 22, // 88: gitaly.CommitService.GetTreeEntries:output_type -> gitaly.GetTreeEntriesResponse
+ 24, // 89: gitaly.CommitService.ListFiles:output_type -> gitaly.ListFilesResponse
+ 26, // 90: gitaly.CommitService.FindCommit:output_type -> gitaly.FindCommitResponse
+ 11, // 91: gitaly.CommitService.CommitStats:output_type -> gitaly.CommitStatsResponse
+ 32, // 92: gitaly.CommitService.FindAllCommits:output_type -> gitaly.FindAllCommitsResponse
+ 34, // 93: gitaly.CommitService.FindCommits:output_type -> gitaly.FindCommitsResponse
+ 36, // 94: gitaly.CommitService.CommitLanguages:output_type -> gitaly.CommitLanguagesResponse
+ 38, // 95: gitaly.CommitService.RawBlame:output_type -> gitaly.RawBlameResponse
+ 40, // 96: gitaly.CommitService.LastCommitForPath:output_type -> gitaly.LastCommitForPathResponse
+ 42, // 97: gitaly.CommitService.ListLastCommitsForTree:output_type -> gitaly.ListLastCommitsForTreeResponse
+ 44, // 98: gitaly.CommitService.CommitsByMessage:output_type -> gitaly.CommitsByMessageResponse
+ 28, // 99: gitaly.CommitService.ListCommitsByOid:output_type -> gitaly.ListCommitsByOidResponse
+ 30, // 100: gitaly.CommitService.ListCommitsByRefName:output_type -> gitaly.ListCommitsByRefNameResponse
+ 46, // 101: gitaly.CommitService.FilterShasWithSignatures:output_type -> gitaly.FilterShasWithSignaturesResponse
+ 50, // 102: gitaly.CommitService.GetCommitSignatures:output_type -> gitaly.GetCommitSignaturesResponse
+ 52, // 103: gitaly.CommitService.GetCommitMessages:output_type -> gitaly.GetCommitMessagesResponse
+ 54, // 104: gitaly.CommitService.CheckObjectsExist:output_type -> gitaly.CheckObjectsExistResponse
+ 82, // [82:105] is the sub-list for method output_type
+ 59, // [59:82] is the sub-list for method input_type
+ 59, // [59:59] is the sub-list for extension type_name
+ 59, // [59:59] is the sub-list for extension extendee
+ 0, // [0:59] is the sub-list for field type_name
}
func init() { file_commit_proto_init() }
@@ -4948,7 +5091,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:
@@ -4960,7 +5103,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:
@@ -4972,6 +5115,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
@@ -4990,7 +5157,7 @@ func file_commit_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_commit_proto_rawDesc,
NumEnums: 6,
- NumMessages: 50,
+ NumMessages: 52,
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 6af502fed..f64e95001 100644
--- a/ruby/proto/gitaly/commit_pb.rb
+++ b/ruby/proto/gitaly/commit_pb.rb
@@ -292,6 +292,14 @@ 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 :existing_revisions, :bytes, 1
+ repeated :missing_revisions, :bytes, 2
+ end
end
end
@@ -352,4 +360,6 @@ 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
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