syntax = "proto3"; package gitaly; import "google/protobuf/timestamp.proto"; import "lint.proto"; option go_package = "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb"; // This comment is left unintentionally blank. enum ObjectType { // This comment is left unintentionally blank. UNKNOWN = 0; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // This comment is left unintentionally blank. COMMIT = 1; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // This comment is left unintentionally blank. BLOB = 2; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // This comment is left unintentionally blank. TREE = 3; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // This comment is left unintentionally blank. TAG = 4; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX } // This comment is left unintentionally blank. enum SignatureType { // This comment is left unintentionally blank. NONE = 0; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // This comment is left unintentionally blank. PGP = 1; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // This comment is left unintentionally blank. X509 = 2; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // This comment is left unintentionally blank. SSH = 3; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // maybe add X509+TSA or other combinations at a later step } // This comment is left unintentionally blank. message Repository { // DEPRECATED: https://gitlab.com/gitlab-org/gitaly/issues/151 reserved 1; reserved "path"; // This comment is left unintentionally blank. string storage_name = 2; // This comment is left unintentionally blank. string relative_path = 3; // Sets the GIT_OBJECT_DIRECTORY envvar on git commands to the value of this field. // It influences the object storage directory the SHA1 directories are created underneath. string git_object_directory = 4; // Sets the GIT_ALTERNATE_OBJECT_DIRECTORIES envvar on git commands to the values of this field. // It influences the list of Git object directories which can be used to search for Git objects. repeated string git_alternate_object_directories = 5; // Used in callbacks to GitLab so that it knows what repository the event is // associated with. May be left empty on RPC's that do not perform callbacks. // During project creation, `gl_repository` may not be known. string gl_repository = 6; reserved 7; // The human-readable GitLab project path (e.g. gitlab-org/gitlab-ce). // When hashed storage is use, this associates a project path with its // path on disk. The name can change over time (e.g. when a project is // renamed). This is primarily used for logging/debugging at the // moment. string gl_project_path = 8; } // A single Git trailer (https://git-scm.com/docs/git-interpret-trailers) // key-value pair. message CommitTrailer { // The key of the trailer, such as `Signed-off-by`. bytes key = 1; // The value of the trailer, such as `Alice `. bytes value = 2; } // Corresponds to Gitlab::Git::Commit message GitCommit { // This comment is left unintentionally blank. string id = 1; // This comment is left unintentionally blank. bytes subject = 2; // This comment is left unintentionally blank. bytes body = 3; // This comment is left unintentionally blank. CommitAuthor author = 4; // This comment is left unintentionally blank. CommitAuthor committer = 5; // This comment is left unintentionally blank. repeated string parent_ids = 6; // If body exceeds a certain threshold, it will be nullified, // but its size will be set in body_size so we can know if // a commit had a body in the first place. int64 body_size = 7; // This comment is left unintentionally blank. SignatureType signature_type = 8; // The tree ID will always be filled, even if the tree is empty. In that case // the value will be `4b825dc642cb6eb9a060e54bf8d69288fbee4904`. // That value is equivalent to `git hash-object -t tree /dev/null` string tree_id = 9; // The list of Git trailers (https://git-scm.com/docs/git-interpret-trailers) // found in this commit's message. The number of trailers and their key/value // sizes are limited. If a trailer exceeds these size limits, it and any // trailers that follow it are not included. repeated CommitTrailer trailers = 10; } // This comment is left unintentionally blank. message CommitAuthor { // This comment is left unintentionally blank. bytes name = 1; // This comment is left unintentionally blank. bytes email = 2; // This comment is left unintentionally blank. google.protobuf.Timestamp date = 3; // This comment is left unintentionally blank. bytes timezone = 4; } // This comment is left unintentionally blank. message ExitStatus { // This comment is left unintentionally blank. int32 value = 1; } // Corresponds to Gitlab::Git::Branch message Branch { // This comment is left unintentionally blank. bytes name = 1; // This comment is left unintentionally blank. GitCommit target_commit = 2; } // This comment is left unintentionally blank. message Tag { // This comment is left unintentionally blank. bytes name = 1; // This comment is left unintentionally blank. string id = 2; // This comment is left unintentionally blank. GitCommit target_commit = 3; // If message exceeds a certain threshold, it will be nullified, // but its size will be set in message_size so we can know if // a tag had a message in the first place. bytes message = 4; // This comment is left unintentionally blank. int64 message_size = 5; // This comment is left unintentionally blank. CommitAuthor tagger = 6; // This comment is left unintentionally blank. SignatureType signature_type = 7; } // This comment is left unintentionally blank. message User { // This comment is left unintentionally blank. string gl_id = 1; // This comment is left unintentionally blank. bytes name = 2; // This comment is left unintentionally blank. bytes email = 3; // This comment is left unintentionally blank. string gl_username = 4; // Timezone is the timezone as configured by the user in the web interface. This // timezone may be used when new commits are created via RPC calls. string timezone = 5; } // This comment is left unintentionally blank. message ObjectPool { // This comment is left unintentionally blank. Repository repository = 1 [(gitaly.repository)=true]; } // This comment is left unintentionally blank. message PaginationParameter { // Instructs pagination to start sending results after the provided page // token appears. A page token allows for a generic pattern to uniquely // identify a result or 'page'. Each paginated RPC may interpret a page // token differently. string page_token = 1; // When fully consuming the response the client will receive _at most_ // `limit` number of resulting objects. Note that the number of response // messages might be much lower, as some response messages already send // multiple objects per message. // When the limit is smaller than 0, it will be normalized to 2147483647 // on the server side. When limit is not set, it defaults to 0, and no // results are send in the response. int32 limit = 2; } // This comment is left unintentionally blank. message PaginationCursor { // To the caller, this is an opaque token to indicate what the caller // should present as a page_token to get subsequent results. string next_cursor = 1; } // https://git-scm.com/docs/git/#_options message GlobalOptions { // Treat pathspecs literally (i.e. no globbing, no pathspec magic) bool literal_pathspecs = 1; } // SortDirection defines the sort direction. enum SortDirection { // ASCENDING sorts by the sort key in ascending order. ASCENDING = 0; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // DESCENDING sorts by the sort key in descending order. DESCENDING = 1; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX }