diff options
author | Jacob Vosmaer <jacob@gitlab.com> | 2019-07-05 12:28:16 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2019-07-05 12:28:16 +0300 |
commit | b9c9aec5cf53de4ea1a7fc3b067dd56d7828e080 (patch) | |
tree | 2693a49918682c12ea22e4085b8c569ac9e62497 /proto/commit.proto | |
parent | 873a408c49ef1b34fce0cd47a80aa192f426d7c0 (diff) |
Start preparation for migrating .proto files
Diffstat (limited to 'proto/commit.proto')
-rw-r--r-- | proto/commit.proto | 386 |
1 files changed, 386 insertions, 0 deletions
diff --git a/proto/commit.proto b/proto/commit.proto new file mode 100644 index 000000000..d338809fb --- /dev/null +++ b/proto/commit.proto @@ -0,0 +1,386 @@ +syntax = "proto3"; + +package gitaly; + +option go_package = "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb"; + +import "shared.proto"; +import "google/protobuf/timestamp.proto"; + +service CommitService { + rpc CommitIsAncestor(CommitIsAncestorRequest) returns (CommitIsAncestorResponse) { + option (op_type).op = ACCESSOR; + } + rpc TreeEntry(TreeEntryRequest) returns (stream TreeEntryResponse) { + option (op_type).op = ACCESSOR; + } + rpc CommitsBetween(CommitsBetweenRequest) returns (stream CommitsBetweenResponse) { + option (op_type).op = ACCESSOR; + } + rpc CountCommits(CountCommitsRequest) returns (CountCommitsResponse) { + option (op_type).op = ACCESSOR; + } + rpc CountDivergingCommits(CountDivergingCommitsRequest) returns (CountDivergingCommitsResponse) { + option (op_type).op = ACCESSOR; + } + rpc GetTreeEntries(GetTreeEntriesRequest) returns (stream GetTreeEntriesResponse) { + option (op_type).op = ACCESSOR; + } + rpc ListFiles(ListFilesRequest) returns (stream ListFilesResponse) { + option (op_type).op = ACCESSOR; + } + rpc FindCommit(FindCommitRequest) returns (FindCommitResponse) { + option (op_type).op = ACCESSOR; + } + rpc CommitStats(CommitStatsRequest) returns (CommitStatsResponse) { + option (op_type).op = ACCESSOR; + } + // Use a stream to paginate the result set + rpc FindAllCommits(FindAllCommitsRequest) returns (stream FindAllCommitsResponse) { + option (op_type).op = ACCESSOR; + } + rpc FindCommits(FindCommitsRequest) returns (stream FindCommitsResponse) { + option (op_type).op = ACCESSOR; + } + rpc CommitLanguages(CommitLanguagesRequest) returns (CommitLanguagesResponse) { + option (op_type).op = ACCESSOR; + } + rpc RawBlame(RawBlameRequest) returns (stream RawBlameResponse) { + option (op_type).op = ACCESSOR; + } + rpc LastCommitForPath(LastCommitForPathRequest) returns (LastCommitForPathResponse) { + option (op_type).op = ACCESSOR; + } + rpc ListLastCommitsForTree(ListLastCommitsForTreeRequest) returns (stream ListLastCommitsForTreeResponse) { + option (op_type).op = ACCESSOR; + } + rpc CommitsByMessage(CommitsByMessageRequest) returns (stream CommitsByMessageResponse) { + option (op_type).op = ACCESSOR; + } + rpc ListCommitsByOid(ListCommitsByOidRequest) returns (stream ListCommitsByOidResponse) { + option (op_type).op = ACCESSOR; + } + rpc FilterShasWithSignatures(stream FilterShasWithSignaturesRequest) returns (stream FilterShasWithSignaturesResponse) { + option (op_type).op = ACCESSOR; + } + + // ExtractCommitSignature returns a stream because the signed text may be + // arbitrarily large and signature verification is impossible without the + // full text. + rpc ExtractCommitSignature(ExtractCommitSignatureRequest) returns (stream ExtractCommitSignatureResponse) { + option (op_type).op = ACCESSOR; + } + rpc GetCommitSignatures(GetCommitSignaturesRequest) returns (stream GetCommitSignaturesResponse) { + option (op_type).op = ACCESSOR; + } + + rpc GetCommitMessages(GetCommitMessagesRequest) returns (stream GetCommitMessagesResponse) { + option (op_type).op = ACCESSOR; + } +} + +message CommitStatsRequest { + Repository repository = 1; + bytes revision = 2; +} + +message CommitStatsResponse { + // OID is the commit. Empty means not found + string oid = 1; + int32 additions = 2; + int32 deletions = 3; +} + +message CommitIsAncestorRequest { + Repository repository = 1; + string ancestor_id = 2; + string child_id = 3; +} + +message CommitIsAncestorResponse { + bool value = 1; +} + +message TreeEntryRequest { + Repository repository = 1; + // commit ID or refname + bytes revision = 2; + // entry path relative to repository root + bytes path = 3; + int64 limit = 4; +} + +message TreeEntryResponse { + // TODO: Replace this enum with ObjectType in shared.proto + enum ObjectType { + COMMIT = 0; + BLOB = 1; + TREE = 2; + TAG = 3; + } + ObjectType type = 1; + // SHA1 object ID + string oid = 2; + int64 size = 3; + // file mode + int32 mode = 4; + // raw object contents + bytes data = 5; +} + +message CommitsBetweenRequest { + Repository repository = 1; + bytes from = 2; + bytes to = 3; +} + +message CommitsBetweenResponse { + repeated GitCommit commits = 1; +} + +message CountCommitsRequest { + Repository repository = 1; + bytes revision = 2; + google.protobuf.Timestamp after = 3; + google.protobuf.Timestamp before = 4; + bytes path = 5; + int32 max_count = 6; + // all and revision are mutually exclusive + bool all = 7; +} + +message CountCommitsResponse { + int32 count = 1; +} + +message CountDivergingCommitsRequest { + Repository repository = 1; + bytes from = 2; + bytes to = 3; + reserved 4; + reserved 5; + reserved 6; + int32 max_count = 7; +} + +message CountDivergingCommitsResponse { + int32 left_count = 1; + int32 right_count = 2; +} + +message TreeEntry { + // TODO: Replace this enum with ObjectType in shared.proto + enum EntryType { + BLOB = 0; + TREE = 1; + COMMIT = 3; + } + // OID of the object this tree entry points to + string oid = 1; + // OID of the tree attached to commit_oid + string root_oid = 2; + // Path relative to repository root + bytes path = 3; + EntryType type = 4; + // File mode e.g. 0644 + int32 mode = 5; + // The commit object via which this entry was retrieved + string commit_oid = 6; + // Relative path of the first subdir that doesn't have only one directory descendant + bytes flat_path = 7; +} + +message GetTreeEntriesRequest { + Repository repository = 1; + bytes revision = 2; + bytes path = 3; + bool recursive = 4; +} + +message GetTreeEntriesResponse { + repeated TreeEntry entries = 1; +} + +message ListFilesRequest { + Repository repository = 1; + bytes revision = 2; +} + +// A single 'page' of the paginated response +message ListFilesResponse { + // Remember to force encoding utf-8 on the client side + repeated bytes paths = 1; +} + +message FindCommitRequest { + Repository repository = 1; + bytes revision = 2; +} + +message FindCommitResponse { + // commit is nil when the commit was not found + GitCommit commit = 1; +} + +message ListCommitsByOidRequest { + Repository repository = 1; + repeated string oid = 2; +} + +message ListCommitsByOidResponse { + repeated GitCommit commits = 1; +} + +message FindAllCommitsRequest { + Repository repository = 1; + // When nil, return all commits reachable by any branch in the repo + bytes revision = 2; + int32 max_count = 3; + int32 skip = 4; + enum Order { + NONE = 0; + TOPO = 1; + DATE = 2; + } + Order order = 5; +} + +// A single 'page' of the result set +message FindAllCommitsResponse { + repeated GitCommit commits = 1; +} + +message FindCommitsRequest { + Repository repository = 1; + bytes revision = 2; + int32 limit = 3; + int32 offset = 4; + repeated bytes paths = 5; + bool follow = 6; + bool skip_merges = 7; + bool disable_walk = 8; + google.protobuf.Timestamp after = 9; + google.protobuf.Timestamp before = 10; + // all and revision are mutually exclusive + bool all = 11; +} + +// A single 'page' of the result set +message FindCommitsResponse { + repeated GitCommit commits = 1; +} + +message CommitLanguagesRequest { + Repository repository = 1; + bytes revision = 2; +} + +message CommitLanguagesResponse { + message Language { + string name = 1; + float share = 2; + string color = 3; + } + repeated Language languages = 1; +} + +message RawBlameRequest { + Repository repository = 1; + bytes revision = 2; + bytes path = 3; +} + +message RawBlameResponse { + bytes data = 1; +} + +message LastCommitForPathRequest { + Repository repository = 1; + bytes revision = 2; + bytes path = 3; +} + +message LastCommitForPathResponse { + // commit is nil when the commit was not found + GitCommit commit = 1; +} + +message ListLastCommitsForTreeRequest { + Repository repository = 1; + string revision = 2; + bytes path = 3; + + // limit == -1 will get the last commit for all paths + int32 limit = 4; + int32 offset = 5; +} + +message ListLastCommitsForTreeResponse { + message CommitForTree { + reserved 1; + + GitCommit commit = 2; + reserved 3; + bytes path_bytes = 4; + } + repeated CommitForTree commits = 1; +} + +message CommitsByMessageRequest { + Repository repository = 1; + bytes revision = 2; + int32 offset = 3; + int32 limit = 4; + bytes path = 5; + string query = 6; +} + +// One 'page' of the paginated response of CommitsByMessage +message CommitsByMessageResponse { + repeated GitCommit commits = 1; +} + +message FilterShasWithSignaturesRequest { + Repository repository = 1; + repeated bytes shas = 2; +} + +message FilterShasWithSignaturesResponse { + repeated bytes shas = 1; +} + +message ExtractCommitSignatureRequest { + Repository repository = 1; + string commit_id = 2; +} + +// Either of the 'signature' and 'signed_text' fields may be present. It +// is up to the caller to stitch them together. +message ExtractCommitSignatureResponse { + bytes signature = 1; + bytes signed_text = 2; +} + +message GetCommitSignaturesRequest { + Repository repository = 1; + repeated string commit_ids = 2; +} + +message GetCommitSignaturesResponse { + // Only present for a new commit signature data. + string commit_id = 1; + // See ExtractCommitSignatureResponse above for how these fields should be handled. + bytes signature = 2; + bytes signed_text = 3; +} + +message GetCommitMessagesRequest { + Repository repository = 1; + repeated string commit_ids = 2; +} + +message GetCommitMessagesResponse { + // Only present for a new commit message + string commit_id = 1; + bytes message = 2; +} |