syntax = "proto3"; package contentservice; option go_package = "github.com/gitpod-io/gitpod/content-service/api"; // WorkspaceInitializer specifies how a workspace is to be initialized message WorkspaceInitializer { oneof spec { EmptyInitializer empty = 1; GitInitializer git = 2; SnapshotInitializer snapshot = 3; PrebuildInitializer prebuild = 4; } } message EmptyInitializer { } message GitInitializer { // remote_uri is the Git remote origin string remote_uri = 1; // upstream_Remote_uri is the fork upstream of a repository string upstream_Remote_uri = 2; // the target mode determines what gets checked out CloneTargetMode target_mode = 3; // the value for the clone target mode - use depends on the target mode string clone_taget = 4; // a path relative to the workspace root in which the code will be checked out to string checkout_location = 5; // config specifies the Git configuration for this workspace GitConfig config = 6; } // CloneTargetMode is the target state in which we want to leave a GitWorkspace enum CloneTargetMode { // REMOTE_HEAD has the local WS point at the remote branch head REMOTE_HEAD = 0; // REMOTE_COMMIT has the local WS point at a specific commit REMOTE_COMMIT = 1; // REMOTE_BRANCH has the local WS point at a remote branch REMOTE_BRANCH = 2; // LOCAL_BRANCH creates a local branch in the workspace LOCAL_BRANCH = 3; } message GitConfig { // custom config values to be set on clone provided through `.gitpod.yml` map custom_config = 1; // authentication method GitAuthMethod authentication = 2; // auth_user is the username used to authenticate the clone string auth_user = 3; // auth_password is the password used to authenticate the clone (can also be an API token) string auth_password = 4; // auth_ots is a URL where one can download the authentication secret (:) // using a GET request. string auth_ots = 5; } // GitAuthMethod is the means of authentication used during clone enum GitAuthMethod { // NO_AUTH disables authentication during clone NO_AUTH = 0; // BASIC_AUTH uses HTTP basic auth during clone (fails if repo is not cloned through http) BASIC_AUTH = 1; // BASIC_AUTH_OTS uses HTTP basic auth during the clone with the secrets coming from the OTS URL. // Fails if either the OTS download or the clone fail. BASIC_AUTH_OTS = 2; } message SnapshotInitializer { // name of the snapshot to restore string snapshot = 1; } // A prebuild initializer combines snapshots with Git: first we try the snapshot, then apply the Git clone target. // If restoring the snapshot fails, we fall back to a regular Git initializer. message PrebuildInitializer { SnapshotInitializer prebuild = 1; GitInitializer git = 2; } // GitStatus describes the current Git working copy status, akin to a combination of "git status" and "git branch" message GitStatus { // branch is branch we're currently on string branch = 1; // latest_commit is the most recent commit on the current branch string latest_commit = 2; // uncommited_files is the number of uncommitted files, possibly truncated repeated string uncommited_files = 3; // the total number of uncommited files int64 total_uncommited_files = 6; // untracked_files is the number of untracked files in the workspace, possibly truncated repeated string untracked_files = 4; // the total number of untracked files int64 total_untracked_files = 7; // unpushed_commits is the number of unpushed changes in the workspace, possibly truncated repeated string unpushed_commits = 5; // the total number of unpushed changes int64 total_unpushed_commits = 8; }