| // Copyright 2017 Google Inc. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto3"; |
| |
| package google.devtools.source.v1; |
| |
| import "google/api/annotations.proto"; |
| |
| option csharp_namespace = "Google.Cloud.DevTools.Source.V1"; |
| option go_package = "google.golang.org/genproto/googleapis/devtools/source/v1;source"; |
| option java_multiple_files = true; |
| option java_outer_classname = "SourceContextProto"; |
| option java_package = "com.google.devtools.source.v1"; |
| |
| |
| // A SourceContext is a reference to a tree of files. A SourceContext together |
| // with a path point to a unique revision of a single file or directory. |
| message SourceContext { |
| // A SourceContext can refer any one of the following types of repositories. |
| oneof context { |
| // A SourceContext referring to a revision in a cloud repo. |
| CloudRepoSourceContext cloud_repo = 1; |
| |
| // A SourceContext referring to a snapshot in a cloud workspace. |
| CloudWorkspaceSourceContext cloud_workspace = 2; |
| |
| // A SourceContext referring to a Gerrit project. |
| GerritSourceContext gerrit = 3; |
| |
| // A SourceContext referring to any third party Git repo (e.g. GitHub). |
| GitSourceContext git = 6; |
| } |
| } |
| |
| // An ExtendedSourceContext is a SourceContext combined with additional |
| // details describing the context. |
| message ExtendedSourceContext { |
| // Any source context. |
| SourceContext context = 1; |
| |
| // Labels with user defined metadata. |
| map<string, string> labels = 2; |
| } |
| |
| // An alias to a repo revision. |
| message AliasContext { |
| // The type of an Alias. |
| enum Kind { |
| // Do not use. |
| ANY = 0; |
| |
| // Git tag |
| FIXED = 1; |
| |
| // Git branch |
| MOVABLE = 2; |
| |
| // OTHER is used to specify non-standard aliases, those not of the kinds |
| // above. For example, if a Git repo has a ref named "refs/foo/bar", it |
| // is considered to be of kind OTHER. |
| OTHER = 4; |
| } |
| |
| // The alias kind. |
| Kind kind = 1; |
| |
| // The alias name. |
| string name = 2; |
| } |
| |
| // A CloudRepoSourceContext denotes a particular revision in a cloud |
| // repo (a repo hosted by the Google Cloud Platform). |
| message CloudRepoSourceContext { |
| // The ID of the repo. |
| RepoId repo_id = 1; |
| |
| // A revision in a cloud repository can be identified by either its revision |
| // ID or its Alias. |
| oneof revision { |
| // A revision ID. |
| string revision_id = 2; |
| |
| // The name of an alias (branch, tag, etc.). |
| string alias_name = 3; |
| |
| // An alias, which may be a branch or tag. |
| AliasContext alias_context = 4; |
| } |
| } |
| |
| // A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. |
| message CloudWorkspaceSourceContext { |
| // The ID of the workspace. |
| CloudWorkspaceId workspace_id = 1; |
| |
| // The ID of the snapshot. |
| // An empty snapshot_id refers to the most recent snapshot. |
| string snapshot_id = 2; |
| } |
| |
| // A SourceContext referring to a Gerrit project. |
| message GerritSourceContext { |
| // The URI of a running Gerrit instance. |
| string host_uri = 1; |
| |
| // The full project name within the host. Projects may be nested, so |
| // "project/subproject" is a valid project name. |
| // The "repo name" is hostURI/project. |
| string gerrit_project = 2; |
| |
| // A revision in a Gerrit project can be identified by either its revision ID |
| // or its alias. |
| oneof revision { |
| // A revision (commit) ID. |
| string revision_id = 3; |
| |
| // The name of an alias (branch, tag, etc.). |
| string alias_name = 4; |
| |
| // An alias, which may be a branch or tag. |
| AliasContext alias_context = 5; |
| } |
| } |
| |
| // A GitSourceContext denotes a particular revision in a third party Git |
| // repository (e.g. GitHub). |
| message GitSourceContext { |
| // Git repository URL. |
| string url = 1; |
| |
| // Git commit hash. |
| // required. |
| string revision_id = 2; |
| } |
| |
| // A unique identifier for a cloud repo. |
| message RepoId { |
| // A cloud repository can be identified by either its project ID and |
| // repository name combination, or its globally unique identifier. |
| oneof id { |
| // A combination of a project ID and a repo name. |
| ProjectRepoId project_repo_id = 1; |
| |
| // A server-assigned, globally unique identifier. |
| string uid = 2; |
| } |
| } |
| |
| // Selects a repo using a Google Cloud Platform project ID |
| // (e.g. winged-cargo-31) and a repo name within that project. |
| message ProjectRepoId { |
| // The ID of the project. |
| string project_id = 1; |
| |
| // The name of the repo. Leave empty for the default repo. |
| string repo_name = 2; |
| } |
| |
| // A CloudWorkspaceId is a unique identifier for a cloud workspace. |
| // A cloud workspace is a place associated with a repo where modified files |
| // can be stored before they are committed. |
| message CloudWorkspaceId { |
| // The ID of the repo containing the workspace. |
| RepoId repo_id = 1; |
| |
| // The unique name of the workspace within the repo. This is the name |
| // chosen by the client in the Source API's CreateWorkspace method. |
| string name = 2; |
| } |