diff options
author | Toon Claes <toon@gitlab.com> | 2023-03-24 18:05:33 +0300 |
---|---|---|
committer | Toon Claes <toon@gitlab.com> | 2023-04-12 18:41:12 +0300 |
commit | 37ec51cceb17bff44b592cb600e56040b7e1ed4c (patch) | |
tree | d92074c74f944d74e5be5b7623756cb4c7adec6d | |
parent | 2d2b8cd32b6d3bf6e7bec8b8615a32e20b784621 (diff) |
diff: Add mode to get only all parent changes
By default the FindChangedPaths RPC uses flag `-m` for git-diff-tree(1)
under the hood. This is usually what most callers want. But in some
cases they only want to see changes that are different from all the
parents.
The option `-c` for git-diff-tree(1) exists for this purpose. These
changes add a mode field to the RPC request so the caller can choose
between either command line flag.
Issue: https://gitlab.com/gitlab-org/gitaly/-/issues/4827
Changelog: added
-rw-r--r-- | internal/gitaly/service/diff/find_changed_paths.go | 148 | ||||
-rw-r--r-- | internal/gitaly/service/diff/find_changed_paths_test.go | 143 | ||||
-rw-r--r-- | proto/diff.proto | 17 | ||||
-rw-r--r-- | proto/go/gitalypb/diff.pb.go | 400 |
4 files changed, 513 insertions, 195 deletions
diff --git a/internal/gitaly/service/diff/find_changed_paths.go b/internal/gitaly/service/diff/find_changed_paths.go index 29f4c8f6d..2de0aa9aa 100644 --- a/internal/gitaly/service/diff/find_changed_paths.go +++ b/internal/gitaly/service/diff/find_changed_paths.go @@ -53,17 +53,34 @@ func (s *server) FindChangedPaths(in *gitalypb.FindChangedPathsRequest, stream g requests[i] = str } + flags := []git.Option{ + git.Flag{Name: "-z"}, + git.Flag{Name: "--stdin"}, + git.Flag{Name: "-r"}, + git.Flag{Name: "--no-renames"}, + git.Flag{Name: "--no-commit-id"}, + git.Flag{Name: "--diff-filter=AMDTC"}, + } + switch in.MergeCommitDiffMode { + case gitalypb.FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES, gitalypb.FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_UNSPECIFIED: + // By default, git diff-tree --stdin does not show differences + // for merge commits. With this flag, it shows differences to + // that commit from all of its parents. + flags = append(flags, git.Flag{Name: "-m"}) + case gitalypb.FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_ALL_PARENTS: + // This flag changes the way a merge commit is displayed (which + // means it is useful only when the command is given one + // <tree-ish>, or --stdin). It shows the differences from each + // of the parents to the merge result simultaneously instead of + // showing pairwise diff between a parent and the result one at + // a time (which is what the -m option does). Furthermore, it + // lists only files which were modified from all parents. + flags = append(flags, git.Flag{Name: "-c"}) + } + cmd, err := s.gitCmdFactory.New(stream.Context(), in.Repository, git.Command{ - Name: "diff-tree", - Flags: []git.Option{ - git.Flag{Name: "-z"}, - git.Flag{Name: "--stdin"}, - git.Flag{Name: "-m"}, - git.Flag{Name: "-r"}, - git.Flag{Name: "--no-renames"}, - git.Flag{Name: "--no-commit-id"}, - git.Flag{Name: "--diff-filter=AMDTC"}, - }, + Name: "diff-tree", + Flags: flags, }, git.WithStdin(strings.NewReader(strings.Join(requests, "\n")+"\n"))) if err != nil { return structerr.NewInternal("cmd err: %w", err) @@ -82,7 +99,7 @@ func (s *server) FindChangedPaths(in *gitalypb.FindChangedPathsRequest, stream g func parsePaths(reader *bufio.Reader, chunker *chunk.Chunker) error { for { - path, err := nextPath(reader) + paths, err := nextPath(reader) if err != nil { if err == io.EOF { break @@ -91,15 +108,57 @@ func parsePaths(reader *bufio.Reader, chunker *chunk.Chunker) error { return fmt.Errorf("next path err: %w", err) } - if err := chunker.Send(path); err != nil { - return fmt.Errorf("err sending to chunker: %w", err) + for _, path := range paths { + if err := chunker.Send(path); err != nil { + return fmt.Errorf("err sending to chunker: %w", err) + } } } return nil } -func nextPath(reader *bufio.Reader) (*gitalypb.ChangedPaths, error) { +func nextPath(reader *bufio.Reader) ([]*gitalypb.ChangedPaths, error) { + // When using git-diff-tree(1) option '-c' each line will be in the format: + // + // 1. a colon for each source. + // 2. mode for each "src"; 000000 if creation or unmerged. + // 3. a space. + // 4. mode for "dst"; 000000 if deletion or unmerged. + // 5. a space. + // 6. oid for each "src"; 0{40} if creation or unmerged. + // 7. a space. + // 8. oid for "dst"; 0{40} if deletion, unmerged or "work tree out of + // sync with the index". + // 9. a space. + // 10. status is concatenated status characters for each parent + // 11. a tab or a NUL when -z option is used. + // 12. path for "src" + // 13. a tab or a NUL when -z option is used; only exists for C or R. + // 14. path for "dst"; only exists for C or R. + // + // Example output: + // + // ::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c + // ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh + // ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c + // + // This example has 2 sources, the mode and oid represent the values at + // each of the parents. When option '-m' was used this would be shown as: + // + // :100644 100644 fabadb8 4866510 M desc.c + // :100755 100755 52b7a2d d2ac7d7 R bar.sh + // :100644 100644 e07d6c5 ee91881 R phooey.c + // :100644 100644 cc95eb0 4866510 M desc.c + // :100755 100755 6d1ac04 d2ac7d7 M bar.sh + // :100644 100644 9042e82 ee91881 R phooey.c + // + // The number of sources returned depends on the number of parents of + // the commit, so we don't know in advance. First step is to count + // number of colons. + + // Read up to the first colon. If trees were passed to the command, + // git-diff-tree(1) will print them, but are swallowed. _, err := reader.ReadBytes(':') if err != nil { return nil, err @@ -110,26 +169,29 @@ func nextPath(reader *bufio.Reader) (*gitalypb.ChangedPaths, error) { return nil, err } split := bytes.Split(line[:len(line)-1], []byte(" ")) - if len(split) != 5 || len(split[4]) != 1 { - return nil, fmt.Errorf("git diff-tree parsing failed on: %v", line) - } - oldMode, err := strconv.ParseInt(string(split[0]), 8, 32) - if err != nil { - return nil, fmt.Errorf("parsing old mode: %w", err) - } + // Determine the number of sources. + // The first colon was eaten by reader.ReadBytes(':') so we need to add + // one extra to get the total source count. + srcCount := bytes.LastIndexByte(split[0], byte(':')) + 2 + split[0] = split[0][srcCount-1:] - newMode, err := strconv.ParseInt(string(split[1]), 8, 32) - if err != nil { - return nil, fmt.Errorf("parsing new mode: %w", err) - } + pathStatus := split[len(split)-1] - pathStatus := split[4] + // Sanity check on the number of fields. There should be: + // * a mode + hash for each source + // * a mode + hash for the destination + // * a status indicator (might be concatenated for multiple sources) + if len(split) != (2*srcCount)+2+1 || len(pathStatus) != srcCount { + return nil, fmt.Errorf("git diff-tree parsing failed on: %v", line) + } + // Read the path (until the next NUL delimiter) path, err := reader.ReadBytes(numStatDelimiter) if err != nil { return nil, err } + path = path[:len(path)-1] statusTypeMap := map[string]gitalypb.ChangedPaths_Status{ "M": gitalypb.ChangedPaths_MODIFIED, @@ -139,19 +201,33 @@ func nextPath(reader *bufio.Reader) (*gitalypb.ChangedPaths, error) { "A": gitalypb.ChangedPaths_ADDED, } - parsedPath, ok := statusTypeMap[string(pathStatus)] - if !ok { - return nil, structerr.NewInternal("unknown changed paths returned: %v", string(pathStatus)) - } + // Produce a gitalypb.ChangedPaths for each source + changedPaths := make([]*gitalypb.ChangedPaths, srcCount) + for i := range changedPaths { + oldMode, err := strconv.ParseInt(string(split[i]), 8, 32) + if err != nil { + return nil, fmt.Errorf("parsing old mode: %w", err) + } + + newMode, err := strconv.ParseInt(string(split[srcCount]), 8, 32) + if err != nil { + return nil, fmt.Errorf("parsing new mode: %w", err) + } - changedPath := &gitalypb.ChangedPaths{ - Status: parsedPath, - Path: path[:len(path)-1], - OldMode: int32(oldMode), - NewMode: int32(newMode), + parsedPath, ok := statusTypeMap[string(pathStatus[i:i+1])] + if !ok { + return nil, structerr.NewInternal("unknown changed paths returned: %v", string(pathStatus)) + } + + changedPaths[i] = &gitalypb.ChangedPaths{ + Status: parsedPath, + Path: path, + OldMode: int32(oldMode), + NewMode: int32(newMode), + } } - return changedPath, nil + return changedPaths, nil } // This sender implements the interface in the chunker class diff --git a/internal/gitaly/service/diff/find_changed_paths_test.go b/internal/gitaly/service/diff/find_changed_paths_test.go index 5c3ef532e..72081c2dc 100644 --- a/internal/gitaly/service/diff/find_changed_paths_test.go +++ b/internal/gitaly/service/diff/find_changed_paths_test.go @@ -29,6 +29,7 @@ func TestFindChangedPathsRequest_success(t *testing.T) { type setupData struct { repo *gitalypb.Repository + diffMode gitalypb.FindChangedPathsRequest_MergeCommitDiffMode commits []commitRequest trees []treeRequest expectedPaths []*gitalypb.ChangedPaths @@ -540,13 +541,153 @@ func TestFindChangedPathsRequest_success(t *testing.T) { } }, }, + { + desc: "Returns the expected results when using ALL_PARENTS diff mode", + setup: func(t *testing.T) setupData { + repo, repoPath := gittest.CreateRepository(t, ctx, cfg) + + oldCommit := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "common.txt", Mode: "100644", Content: "before"}, + ), + ) + leftCommit := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "common.txt", Mode: "100644", Content: "before"}, + gittest.TreeEntry{Path: "conflicted.txt", Mode: "100644", Content: "left"}, + ), + ) + rightCommit := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "common.txt", Mode: "100644", Content: "after"}, + gittest.TreeEntry{Path: "conflicted.txt", Mode: "100644", Content: "right"}, + ), + ) + mergeCommit := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(leftCommit, rightCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "common.txt", Mode: "100644", Content: "after"}, + gittest.TreeEntry{Path: "conflicted.txt", Mode: "100644", Content: "left\nright"}, + ), + ) + + expectedPaths := []*gitalypb.ChangedPaths{ + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("conflicted.txt"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("conflicted.txt"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + } + + return setupData{ + repo: repo, + diffMode: gitalypb.FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_ALL_PARENTS, + commits: []commitRequest{{commit: mergeCommit.String()}}, + expectedPaths: expectedPaths, + } + }, + }, + { + desc: "Returns the expected results on octopus merge when using diff mode ALL_PARENTS", + setup: func(t *testing.T) setupData { + repo, repoPath := gittest.CreateRepository(t, ctx, cfg) + + oldCommit := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "README.md", Mode: "100644", Content: "# Hello"}, + ), + ) + commit1 := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "README.md", Mode: "100644", Content: "# Hello\nWelcome"}, + ), + ) + commit2 := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "README.md", Mode: "100644", Content: "# Hello\nto"}, + ), + ) + commit3 := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "README.md", Mode: "100644", Content: "# Hello\nthis"}, + ), + ) + commit4 := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "README.md", Mode: "100644", Content: "# Hello\nproject"}, + ), + ) + mergeCommit := gittest.WriteCommit(t, cfg, repoPath, + gittest.WithParents(oldCommit, commit1, commit2, commit3, commit4), + gittest.WithTreeEntries( + gittest.TreeEntry{Path: "README.md", Mode: "100644", Content: "# Hello\nWelcome to this project"}, + ), + ) + + expectedPaths := []*gitalypb.ChangedPaths{ + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("README.md"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("README.md"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("README.md"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("README.md"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + { + Status: gitalypb.ChangedPaths_MODIFIED, + Path: []byte("README.md"), + OldMode: 0o100644, + NewMode: 0o100644, + }, + } + + return setupData{ + repo: repo, + diffMode: gitalypb.FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_ALL_PARENTS, + commits: []commitRequest{{commit: mergeCommit.String()}}, + expectedPaths: expectedPaths, + } + }, + }, } for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { setupData := tc.setup(t) - rpcRequest := &gitalypb.FindChangedPathsRequest{Repository: setupData.repo} + rpcRequest := &gitalypb.FindChangedPathsRequest{ + Repository: setupData.repo, + MergeCommitDiffMode: setupData.diffMode, + } for _, commitReq := range setupData.commits { req := &gitalypb.FindChangedPathsRequest_Request{ diff --git a/proto/diff.proto b/proto/diff.proto index bda865fa9..6e4a09003 100644 --- a/proto/diff.proto +++ b/proto/diff.proto @@ -265,6 +265,20 @@ message DiffStatsResponse { // to its parent. Merge commits will show files which are different to all of // its parents. message FindChangedPathsRequest { + // MergeCommitDiffMode controls which mode to use to produce diff output for merge commits + enum MergeCommitDiffMode { + // MERGE_COMMIT_DIFF_MODE_UNSPECIFIED is the default value. + // It is equivalent to DIFF_MODE_INCLUDE_MERGES. + MERGE_COMMIT_DIFF_MODE_UNSPECIFIED = 0; + // MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES tells git to also show differences for merge commits. + // Please refer to the documentation of the `-m` flag of git-diff-tree(1). + MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES = 1; + // MERGE_COMMIT_DIFF_MODE_ALL_PARENTS tells git to only show differences for + // files which were modified from all parents. + // Please refer to the documentation of the `-c` flag of git-diff-tree(1). + MERGE_COMMIT_DIFF_MODE_ALL_PARENTS = 2; + } + // Request is a single request to pass to git diff-tree. message Request { // TreeRequest compares two trees. @@ -305,6 +319,9 @@ message FindChangedPathsRequest { repeated string commits = 2 [deprecated=true]; // requests specifies the requests of what to compare. repeated Request requests = 3; + + // MergeCommitDiffMode controls how merge commits are treated. + MergeCommitDiffMode merge_commit_diff_mode = 4; } // Returns a list of files that have been changed in the commits given diff --git a/proto/go/gitalypb/diff.pb.go b/proto/go/gitalypb/diff.pb.go index b1a4f3497..97b2ff57a 100644 --- a/proto/go/gitalypb/diff.pb.go +++ b/proto/go/gitalypb/diff.pb.go @@ -126,6 +126,63 @@ func (CommitDiffRequest_WhitespaceChanges) EnumDescriptor() ([]byte, []int) { return file_diff_proto_rawDescGZIP(), []int{0, 1} } +// MergeCommitDiffMode controls which mode to use to produce diff output for merge commits +type FindChangedPathsRequest_MergeCommitDiffMode int32 + +const ( + // MERGE_COMMIT_DIFF_MODE_UNSPECIFIED is the default value. + // It is equivalent to DIFF_MODE_INCLUDE_MERGES. + FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_UNSPECIFIED FindChangedPathsRequest_MergeCommitDiffMode = 0 + // MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES tells git to also show differences for merge commits. + // Please refer to the documentation of the `-m` flag of git-diff-tree(1). + FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES FindChangedPathsRequest_MergeCommitDiffMode = 1 + // MERGE_COMMIT_DIFF_MODE_ALL_PARENTS tells git to only show differences for + // files which were modified from all parents. + // Please refer to the documentation of the `-c` flag of git-diff-tree(1). + FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_ALL_PARENTS FindChangedPathsRequest_MergeCommitDiffMode = 2 +) + +// Enum value maps for FindChangedPathsRequest_MergeCommitDiffMode. +var ( + FindChangedPathsRequest_MergeCommitDiffMode_name = map[int32]string{ + 0: "MERGE_COMMIT_DIFF_MODE_UNSPECIFIED", + 1: "MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES", + 2: "MERGE_COMMIT_DIFF_MODE_ALL_PARENTS", + } + FindChangedPathsRequest_MergeCommitDiffMode_value = map[string]int32{ + "MERGE_COMMIT_DIFF_MODE_UNSPECIFIED": 0, + "MERGE_COMMIT_DIFF_MODE_INCLUDE_MERGES": 1, + "MERGE_COMMIT_DIFF_MODE_ALL_PARENTS": 2, + } +) + +func (x FindChangedPathsRequest_MergeCommitDiffMode) Enum() *FindChangedPathsRequest_MergeCommitDiffMode { + p := new(FindChangedPathsRequest_MergeCommitDiffMode) + *p = x + return p +} + +func (x FindChangedPathsRequest_MergeCommitDiffMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FindChangedPathsRequest_MergeCommitDiffMode) Descriptor() protoreflect.EnumDescriptor { + return file_diff_proto_enumTypes[2].Descriptor() +} + +func (FindChangedPathsRequest_MergeCommitDiffMode) Type() protoreflect.EnumType { + return &file_diff_proto_enumTypes[2] +} + +func (x FindChangedPathsRequest_MergeCommitDiffMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FindChangedPathsRequest_MergeCommitDiffMode.Descriptor instead. +func (FindChangedPathsRequest_MergeCommitDiffMode) EnumDescriptor() ([]byte, []int) { + return file_diff_proto_rawDescGZIP(), []int{12, 0} +} + // This comment is left unintentionally blank. type ChangedPaths_Status int32 @@ -171,11 +228,11 @@ func (x ChangedPaths_Status) String() string { } func (ChangedPaths_Status) Descriptor() protoreflect.EnumDescriptor { - return file_diff_proto_enumTypes[2].Descriptor() + return file_diff_proto_enumTypes[3].Descriptor() } func (ChangedPaths_Status) Type() protoreflect.EnumType { - return &file_diff_proto_enumTypes[2] + return &file_diff_proto_enumTypes[3] } func (x ChangedPaths_Status) Number() protoreflect.EnumNumber { @@ -1200,6 +1257,8 @@ type FindChangedPathsRequest struct { Commits []string `protobuf:"bytes,2,rep,name=commits,proto3" json:"commits,omitempty"` // requests specifies the requests of what to compare. Requests []*FindChangedPathsRequest_Request `protobuf:"bytes,3,rep,name=requests,proto3" json:"requests,omitempty"` + // MergeCommitDiffMode controls how merge commits are treated. + MergeCommitDiffMode FindChangedPathsRequest_MergeCommitDiffMode `protobuf:"varint,4,opt,name=merge_commit_diff_mode,json=mergeCommitDiffMode,proto3,enum=gitaly.FindChangedPathsRequest_MergeCommitDiffMode" json:"merge_commit_diff_mode,omitempty"` } func (x *FindChangedPathsRequest) Reset() { @@ -1256,6 +1315,13 @@ func (x *FindChangedPathsRequest) GetRequests() []*FindChangedPathsRequest_Reque return nil } +func (x *FindChangedPathsRequest) GetMergeCommitDiffMode() FindChangedPathsRequest_MergeCommitDiffMode { + if x != nil { + return x.MergeCommitDiffMode + } + return FindChangedPathsRequest_MERGE_COMMIT_DIFF_MODE_UNSPECIFIED +} + // Returns a list of files that have been changed in the commits given type FindChangedPathsResponse struct { state protoimpl.MessageState @@ -1884,7 +1950,7 @@ var file_diff_proto_rawDesc = []byte{ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x22, 0xe3, 0x04, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x22, 0xe0, 0x06, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, @@ -1895,104 +1961,120 @@ var file_diff_proto_rawDesc = []byte{ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x1a, 0xaa, 0x03, 0x0a, 0x07, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x0c, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x5e, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, - 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x6b, 0x0a, 0x0b, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2c, 0x0a, 0x12, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x65, 0x66, - 0x74, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, - 0x13, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x70, 0x0a, - 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x18, 0x46, 0x69, 0x6e, 0x64, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, - 0xda, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6c, 0x64, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x6c, 0x64, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x22, - 0x4b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x44, 0x44, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, - 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x50, 0x49, 0x45, 0x44, 0x10, 0x04, 0x22, 0x93, 0x01, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, - 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, - 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x49, 0x64, 0x32, 0xb7, 0x04, 0x0a, 0x0b, 0x44, 0x69, 0x66, 0x66, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, 0x66, - 0x66, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, - 0x30, 0x01, 0x12, 0x50, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x6c, 0x74, - 0x61, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, - 0x08, 0x02, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x07, 0x52, 0x61, 0x77, 0x44, 0x69, 0x66, 0x66, 0x12, - 0x16, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x44, 0x69, 0x66, 0x66, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x52, 0x61, 0x77, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x61, - 0x77, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x52, 0x61, 0x77, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x50, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x02, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x16, 0x6d, 0x65, + 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, + 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x72, 0x67, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x13, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, + 0x4d, 0x6f, 0x64, 0x65, 0x1a, 0xaa, 0x03, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x58, 0x0a, 0x0c, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, + 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0e, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x6b, 0x0a, 0x0b, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x65, 0x66, + 0x74, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x65, 0x66, 0x74, 0x54, 0x72, 0x65, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x69, 0x67, 0x68, 0x74, 0x54, 0x72, 0x65, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x70, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x22, 0x90, 0x01, 0x0a, 0x13, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x44, 0x69, 0x66, 0x66, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x45, 0x52, + 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x29, 0x0a, 0x25, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, + 0x54, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4c, + 0x55, 0x44, 0x45, 0x5f, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x53, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, + 0x4d, 0x45, 0x52, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x49, 0x46, + 0x46, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x50, 0x41, 0x52, 0x45, 0x4e, + 0x54, 0x53, 0x10, 0x02, 0x22, 0x46, 0x0a, 0x18, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0xda, 0x01, 0x0a, + 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x4b, 0x0a, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, + 0x06, 0x43, 0x4f, 0x50, 0x49, 0x45, 0x44, 0x10, 0x04, 0x22, 0x93, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, + 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0b, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, + 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x2f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, + 0x32, 0xb7, 0x04, 0x0a, 0x0b, 0x44, 0x69, 0x66, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x4d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x19, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, + 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, - 0x5f, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, - 0x74, 0x68, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, + 0x50, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x1a, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, + 0x01, 0x12, 0x44, 0x0a, 0x07, 0x52, 0x61, 0x77, 0x44, 0x69, 0x66, 0x66, 0x12, 0x16, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, + 0x77, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, + 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x61, 0x77, 0x50, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, + 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, - 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x12, 0x19, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x42, 0x34, 0x5a, - 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, - 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, - 0x35, 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, + 0x12, 0x4a, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x18, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x44, 0x69, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, + 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, + 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4b, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x12, 0x19, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, + 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, + 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x35, 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 ( @@ -2007,72 +2089,74 @@ func file_diff_proto_rawDescGZIP() []byte { return file_diff_proto_rawDescData } -var file_diff_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_diff_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_diff_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_diff_proto_goTypes = []interface{}{ (CommitDiffRequest_DiffMode)(0), // 0: gitaly.CommitDiffRequest.DiffMode (CommitDiffRequest_WhitespaceChanges)(0), // 1: gitaly.CommitDiffRequest.WhitespaceChanges - (ChangedPaths_Status)(0), // 2: gitaly.ChangedPaths.Status - (*CommitDiffRequest)(nil), // 3: gitaly.CommitDiffRequest - (*CommitDiffResponse)(nil), // 4: gitaly.CommitDiffResponse - (*CommitDeltaRequest)(nil), // 5: gitaly.CommitDeltaRequest - (*CommitDelta)(nil), // 6: gitaly.CommitDelta - (*CommitDeltaResponse)(nil), // 7: gitaly.CommitDeltaResponse - (*RawDiffRequest)(nil), // 8: gitaly.RawDiffRequest - (*RawDiffResponse)(nil), // 9: gitaly.RawDiffResponse - (*RawPatchRequest)(nil), // 10: gitaly.RawPatchRequest - (*RawPatchResponse)(nil), // 11: gitaly.RawPatchResponse - (*DiffStatsRequest)(nil), // 12: gitaly.DiffStatsRequest - (*DiffStats)(nil), // 13: gitaly.DiffStats - (*DiffStatsResponse)(nil), // 14: gitaly.DiffStatsResponse - (*FindChangedPathsRequest)(nil), // 15: gitaly.FindChangedPathsRequest - (*FindChangedPathsResponse)(nil), // 16: gitaly.FindChangedPathsResponse - (*ChangedPaths)(nil), // 17: gitaly.ChangedPaths - (*GetPatchIDRequest)(nil), // 18: gitaly.GetPatchIDRequest - (*GetPatchIDResponse)(nil), // 19: gitaly.GetPatchIDResponse - nil, // 20: gitaly.CommitDiffRequest.MaxPatchBytesForFileExtensionEntry - (*FindChangedPathsRequest_Request)(nil), // 21: gitaly.FindChangedPathsRequest.Request - (*FindChangedPathsRequest_Request_TreeRequest)(nil), // 22: gitaly.FindChangedPathsRequest.Request.TreeRequest - (*FindChangedPathsRequest_Request_CommitRequest)(nil), // 23: gitaly.FindChangedPathsRequest.Request.CommitRequest - (*Repository)(nil), // 24: gitaly.Repository + (FindChangedPathsRequest_MergeCommitDiffMode)(0), // 2: gitaly.FindChangedPathsRequest.MergeCommitDiffMode + (ChangedPaths_Status)(0), // 3: gitaly.ChangedPaths.Status + (*CommitDiffRequest)(nil), // 4: gitaly.CommitDiffRequest + (*CommitDiffResponse)(nil), // 5: gitaly.CommitDiffResponse + (*CommitDeltaRequest)(nil), // 6: gitaly.CommitDeltaRequest + (*CommitDelta)(nil), // 7: gitaly.CommitDelta + (*CommitDeltaResponse)(nil), // 8: gitaly.CommitDeltaResponse + (*RawDiffRequest)(nil), // 9: gitaly.RawDiffRequest + (*RawDiffResponse)(nil), // 10: gitaly.RawDiffResponse + (*RawPatchRequest)(nil), // 11: gitaly.RawPatchRequest + (*RawPatchResponse)(nil), // 12: gitaly.RawPatchResponse + (*DiffStatsRequest)(nil), // 13: gitaly.DiffStatsRequest + (*DiffStats)(nil), // 14: gitaly.DiffStats + (*DiffStatsResponse)(nil), // 15: gitaly.DiffStatsResponse + (*FindChangedPathsRequest)(nil), // 16: gitaly.FindChangedPathsRequest + (*FindChangedPathsResponse)(nil), // 17: gitaly.FindChangedPathsResponse + (*ChangedPaths)(nil), // 18: gitaly.ChangedPaths + (*GetPatchIDRequest)(nil), // 19: gitaly.GetPatchIDRequest + (*GetPatchIDResponse)(nil), // 20: gitaly.GetPatchIDResponse + nil, // 21: gitaly.CommitDiffRequest.MaxPatchBytesForFileExtensionEntry + (*FindChangedPathsRequest_Request)(nil), // 22: gitaly.FindChangedPathsRequest.Request + (*FindChangedPathsRequest_Request_TreeRequest)(nil), // 23: gitaly.FindChangedPathsRequest.Request.TreeRequest + (*FindChangedPathsRequest_Request_CommitRequest)(nil), // 24: gitaly.FindChangedPathsRequest.Request.CommitRequest + (*Repository)(nil), // 25: gitaly.Repository } var file_diff_proto_depIdxs = []int32{ - 24, // 0: gitaly.CommitDiffRequest.repository:type_name -> gitaly.Repository + 25, // 0: gitaly.CommitDiffRequest.repository:type_name -> gitaly.Repository 0, // 1: gitaly.CommitDiffRequest.diff_mode:type_name -> gitaly.CommitDiffRequest.DiffMode - 20, // 2: gitaly.CommitDiffRequest.max_patch_bytes_for_file_extension:type_name -> gitaly.CommitDiffRequest.MaxPatchBytesForFileExtensionEntry + 21, // 2: gitaly.CommitDiffRequest.max_patch_bytes_for_file_extension:type_name -> gitaly.CommitDiffRequest.MaxPatchBytesForFileExtensionEntry 1, // 3: gitaly.CommitDiffRequest.whitespace_changes:type_name -> gitaly.CommitDiffRequest.WhitespaceChanges - 24, // 4: gitaly.CommitDeltaRequest.repository:type_name -> gitaly.Repository - 6, // 5: gitaly.CommitDeltaResponse.deltas:type_name -> gitaly.CommitDelta - 24, // 6: gitaly.RawDiffRequest.repository:type_name -> gitaly.Repository - 24, // 7: gitaly.RawPatchRequest.repository:type_name -> gitaly.Repository - 24, // 8: gitaly.DiffStatsRequest.repository:type_name -> gitaly.Repository - 13, // 9: gitaly.DiffStatsResponse.stats:type_name -> gitaly.DiffStats - 24, // 10: gitaly.FindChangedPathsRequest.repository:type_name -> gitaly.Repository - 21, // 11: gitaly.FindChangedPathsRequest.requests:type_name -> gitaly.FindChangedPathsRequest.Request - 17, // 12: gitaly.FindChangedPathsResponse.paths:type_name -> gitaly.ChangedPaths - 2, // 13: gitaly.ChangedPaths.status:type_name -> gitaly.ChangedPaths.Status - 24, // 14: gitaly.GetPatchIDRequest.repository:type_name -> gitaly.Repository - 22, // 15: gitaly.FindChangedPathsRequest.Request.tree_request:type_name -> gitaly.FindChangedPathsRequest.Request.TreeRequest - 23, // 16: gitaly.FindChangedPathsRequest.Request.commit_request:type_name -> gitaly.FindChangedPathsRequest.Request.CommitRequest - 3, // 17: gitaly.DiffService.CommitDiff:input_type -> gitaly.CommitDiffRequest - 5, // 18: gitaly.DiffService.CommitDelta:input_type -> gitaly.CommitDeltaRequest - 8, // 19: gitaly.DiffService.RawDiff:input_type -> gitaly.RawDiffRequest - 10, // 20: gitaly.DiffService.RawPatch:input_type -> gitaly.RawPatchRequest - 12, // 21: gitaly.DiffService.DiffStats:input_type -> gitaly.DiffStatsRequest - 15, // 22: gitaly.DiffService.FindChangedPaths:input_type -> gitaly.FindChangedPathsRequest - 18, // 23: gitaly.DiffService.GetPatchID:input_type -> gitaly.GetPatchIDRequest - 4, // 24: gitaly.DiffService.CommitDiff:output_type -> gitaly.CommitDiffResponse - 7, // 25: gitaly.DiffService.CommitDelta:output_type -> gitaly.CommitDeltaResponse - 9, // 26: gitaly.DiffService.RawDiff:output_type -> gitaly.RawDiffResponse - 11, // 27: gitaly.DiffService.RawPatch:output_type -> gitaly.RawPatchResponse - 14, // 28: gitaly.DiffService.DiffStats:output_type -> gitaly.DiffStatsResponse - 16, // 29: gitaly.DiffService.FindChangedPaths:output_type -> gitaly.FindChangedPathsResponse - 19, // 30: gitaly.DiffService.GetPatchID:output_type -> gitaly.GetPatchIDResponse - 24, // [24:31] is the sub-list for method output_type - 17, // [17:24] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 25, // 4: gitaly.CommitDeltaRequest.repository:type_name -> gitaly.Repository + 7, // 5: gitaly.CommitDeltaResponse.deltas:type_name -> gitaly.CommitDelta + 25, // 6: gitaly.RawDiffRequest.repository:type_name -> gitaly.Repository + 25, // 7: gitaly.RawPatchRequest.repository:type_name -> gitaly.Repository + 25, // 8: gitaly.DiffStatsRequest.repository:type_name -> gitaly.Repository + 14, // 9: gitaly.DiffStatsResponse.stats:type_name -> gitaly.DiffStats + 25, // 10: gitaly.FindChangedPathsRequest.repository:type_name -> gitaly.Repository + 22, // 11: gitaly.FindChangedPathsRequest.requests:type_name -> gitaly.FindChangedPathsRequest.Request + 2, // 12: gitaly.FindChangedPathsRequest.merge_commit_diff_mode:type_name -> gitaly.FindChangedPathsRequest.MergeCommitDiffMode + 18, // 13: gitaly.FindChangedPathsResponse.paths:type_name -> gitaly.ChangedPaths + 3, // 14: gitaly.ChangedPaths.status:type_name -> gitaly.ChangedPaths.Status + 25, // 15: gitaly.GetPatchIDRequest.repository:type_name -> gitaly.Repository + 23, // 16: gitaly.FindChangedPathsRequest.Request.tree_request:type_name -> gitaly.FindChangedPathsRequest.Request.TreeRequest + 24, // 17: gitaly.FindChangedPathsRequest.Request.commit_request:type_name -> gitaly.FindChangedPathsRequest.Request.CommitRequest + 4, // 18: gitaly.DiffService.CommitDiff:input_type -> gitaly.CommitDiffRequest + 6, // 19: gitaly.DiffService.CommitDelta:input_type -> gitaly.CommitDeltaRequest + 9, // 20: gitaly.DiffService.RawDiff:input_type -> gitaly.RawDiffRequest + 11, // 21: gitaly.DiffService.RawPatch:input_type -> gitaly.RawPatchRequest + 13, // 22: gitaly.DiffService.DiffStats:input_type -> gitaly.DiffStatsRequest + 16, // 23: gitaly.DiffService.FindChangedPaths:input_type -> gitaly.FindChangedPathsRequest + 19, // 24: gitaly.DiffService.GetPatchID:input_type -> gitaly.GetPatchIDRequest + 5, // 25: gitaly.DiffService.CommitDiff:output_type -> gitaly.CommitDiffResponse + 8, // 26: gitaly.DiffService.CommitDelta:output_type -> gitaly.CommitDeltaResponse + 10, // 27: gitaly.DiffService.RawDiff:output_type -> gitaly.RawDiffResponse + 12, // 28: gitaly.DiffService.RawPatch:output_type -> gitaly.RawPatchResponse + 15, // 29: gitaly.DiffService.DiffStats:output_type -> gitaly.DiffStatsResponse + 17, // 30: gitaly.DiffService.FindChangedPaths:output_type -> gitaly.FindChangedPathsResponse + 20, // 31: gitaly.DiffService.GetPatchID:output_type -> gitaly.GetPatchIDResponse + 25, // [25:32] is the sub-list for method output_type + 18, // [18:25] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_diff_proto_init() } @@ -2333,7 +2417,7 @@ func file_diff_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_diff_proto_rawDesc, - NumEnums: 3, + NumEnums: 4, NumMessages: 21, NumExtensions: 0, NumServices: 1, |