syntax = "proto3"; package gitks; import "oid.proto"; import "repository.proto"; message DiffOptions { enum WhitespaceMode { DIFF_WHITESPACE_MODE_UNSPECIFIED = 0; DIFF_WHITESPACE_MODE_DEFAULT = 1; DIFF_WHITESPACE_MODE_IGNORE_ALL = 2; DIFF_WHITESPACE_MODE_IGNORE_CHANGE = 3; DIFF_WHITESPACE_MODE_IGNORE_EOL = 4; } bool recursive = 1; bool include_binary = 2; bool include_patch = 3; bool rename_detection = 4; bool copy_detection = 5; uint32 context_lines = 6; repeated string pathspec = 7; WhitespaceMode whitespace_mode = 8; uint64 max_files = 9; uint64 max_bytes = 10; } message DiffLine { enum LineType { DIFF_LINE_TYPE_UNSPECIFIED = 0; DIFF_LINE_TYPE_CONTEXT = 1; DIFF_LINE_TYPE_ADDED = 2; DIFF_LINE_TYPE_DELETED = 3; DIFF_LINE_TYPE_HUNK_HEADER = 4; DIFF_LINE_TYPE_NO_NEWLINE = 5; } LineType type = 1; int32 old_line = 2; int32 new_line = 3; bytes content = 4; bool truncated = 5; } message DiffHunk { string header = 1; uint32 old_start = 2; uint32 old_lines = 3; uint32 new_start = 4; uint32 new_lines = 5; repeated DiffLine lines = 6; } message DiffFile { enum ChangeType { DIFF_FILE_CHANGE_TYPE_UNSPECIFIED = 0; DIFF_FILE_CHANGE_TYPE_ADDED = 1; DIFF_FILE_CHANGE_TYPE_MODIFIED = 2; DIFF_FILE_CHANGE_TYPE_DELETED = 3; DIFF_FILE_CHANGE_TYPE_RENAMED = 4; DIFF_FILE_CHANGE_TYPE_COPIED = 5; DIFF_FILE_CHANGE_TYPE_TYPE_CHANGED = 6; DIFF_FILE_CHANGE_TYPE_UNMERGED = 7; } string old_path = 1; string new_path = 2; Oid old_oid = 3; Oid new_oid = 4; uint32 old_mode = 5; uint32 new_mode = 6; ChangeType change_type = 7; bool binary = 8; bool too_large = 9; uint32 additions = 10; uint32 deletions = 11; repeated DiffHunk hunks = 12; bytes patch = 13; double similarity = 14; } message DiffStats { uint32 additions = 1; uint32 deletions = 2; uint32 changed_files = 3; } message Diff { repeated DiffFile files = 1; DiffStats stats = 2; bool overflow = 3; } message GetDiffRequest { RepositoryHeader repository = 1; ObjectSelector base = 2; ObjectSelector head = 3; DiffOptions options = 4; Pagination pagination = 5; } message GetDiffResponse { repeated DiffFile files = 1; DiffStats stats = 2; PageInfo page_info = 3; bool overflow = 4; } message GetCommitDiffRequest { RepositoryHeader repository = 1; ObjectSelector commit = 2; DiffOptions options = 3; Pagination pagination = 4; } message GetPatchRequest { RepositoryHeader repository = 1; ObjectSelector base = 2; ObjectSelector head = 3; DiffOptions options = 4; } message GetPatchResponse { bytes data = 1; } message GetDiffStatsRequest { RepositoryHeader repository = 1; ObjectSelector base = 2; ObjectSelector head = 3; DiffOptions options = 4; } service DiffService { rpc GetDiff(GetDiffRequest) returns (GetDiffResponse); rpc GetCommitDiff(GetCommitDiffRequest) returns (GetDiffResponse); rpc GetPatch(GetPatchRequest) returns (stream GetPatchResponse); rpc GetDiffStats(GetDiffStatsRequest) returns (DiffStats); }