From 4ebc169f8eb27ee707a20c409a814ab0500cf8e3 Mon Sep 17 00:00:00 2001 From: "bcy1028@gmail.com" Date: Wed, 11 May 2016 12:43:08 -0400 Subject: [PATCH] Add google/devtools/source/v1/source_context.proto --- .../devtools/source/v1/source_context.proto | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 google/devtools/source/v1/source_context.proto diff --git a/google/devtools/source/v1/source_context.proto b/google/devtools/source/v1/source_context.proto new file mode 100644 index 00000000..43e5e18a --- /dev/null +++ b/google/devtools/source/v1/source_context.proto @@ -0,0 +1,179 @@ +// Copyright (c) 2016, 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 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 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; +}