зеркало из https://github.com/golang/build.git
227 строки
6.7 KiB
Protocol Buffer
227 строки
6.7 KiB
Protocol Buffer
// Copyright 2017 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// https://developers.google.com/protocol-buffers/docs/proto3
|
|
syntax = "proto3";
|
|
|
|
import "github.com/golang/protobuf/ptypes/timestamp/timestamp.proto";
|
|
|
|
package maintpb;
|
|
|
|
message Mutation {
|
|
GithubIssueMutation github_issue = 1; // issue-specific changes
|
|
GithubMutation github = 3; // labels, milestones (not issue-specific)
|
|
|
|
GitMutation git = 2;
|
|
GerritMutation gerrit = 4;
|
|
}
|
|
|
|
message GithubMutation {
|
|
string owner = 1; // "golang"
|
|
string repo = 2; // "go"
|
|
|
|
// Updated labels. (All must have id set at least)
|
|
repeated GithubLabel labels = 3;
|
|
|
|
// Updated milestones. (All must have id set at least)
|
|
repeated GithubMilestone milestones = 4;
|
|
}
|
|
|
|
message GithubIssueMutation {
|
|
string owner = 1; // "golang"
|
|
string repo = 2; // "go"
|
|
int32 number = 3; // 1, 2, 3... (not the ID)
|
|
|
|
// not_exist is set true if the issue has been found to not exist.
|
|
// If true, the owner/repo/number fields above must still be set.
|
|
// If a future issue mutation for the same number arrives without
|
|
// not_exist set, then the issue comes back to life.
|
|
bool not_exist = 13;
|
|
|
|
int64 id = 12; // unique across all repos
|
|
|
|
GithubUser user = 4; // only set for new/updated issues, not new comments
|
|
repeated GithubUser assignees = 10; // who the issue is assigned to
|
|
repeated int64 deleted_assignees = 11; // IDs of users to delete from the assignee list
|
|
google.protobuf.Timestamp created = 5; // only needed on new issues
|
|
google.protobuf.Timestamp updated = 6; // only set on updated issue text
|
|
string body = 7; // for new or updated issue text (top post, which isn't a comment)
|
|
string title = 9; // issue title
|
|
|
|
bool no_milestone = 15; // true unsets any previously-set milestone; false ignored.
|
|
// When setting a milestone, only the milestone_id must be set.
|
|
// TODO: allow num or title to be used if Github only returns those? So far unneeded.
|
|
// The num and title, if non-zero, are treated as if they were a GithubMutation.Milestone update.
|
|
int64 milestone_id = 16; // sets milestone to this milestone id (e.g. 2386495, global?)
|
|
int64 milestone_num = 17; // sets milestone to this milestone number (e.g. 2, per-repo)
|
|
string milestone_title = 18;
|
|
|
|
BoolChange closed = 19;
|
|
BoolChange locked = 25;
|
|
|
|
google.protobuf.Timestamp closed_at = 21;
|
|
GithubUser closed_by = 22;
|
|
|
|
repeated int64 remove_label = 23; // label IDs to remove
|
|
repeated GithubLabel add_label = 24;
|
|
|
|
repeated GithubIssueCommentMutation comment = 8;
|
|
GithubIssueSyncStatus comment_status = 14;
|
|
|
|
repeated GithubIssueEvent event = 26; // new events to add
|
|
GithubIssueSyncStatus event_status = 27;
|
|
}
|
|
|
|
// BoolChange represents a change to a boolean value.
|
|
message BoolChange {
|
|
bool val = 1;
|
|
}
|
|
|
|
message GithubLabel {
|
|
int64 id = 1;
|
|
string name = 2;
|
|
}
|
|
|
|
message GithubMilestone {
|
|
int64 id = 1; // required
|
|
|
|
// Following only need to be non-zero on changes:
|
|
string title = 2;
|
|
BoolChange closed = 3;
|
|
int64 number = 4;
|
|
}
|
|
|
|
// See https://developer.github.com/v3/activity/events/types/#issuesevent
|
|
// for some info.
|
|
message GithubIssueEvent {
|
|
// Required:
|
|
int64 id = 1;
|
|
|
|
// event_type can be one of "assigned", "unassigned", "labeled",
|
|
// "unlabeled", "opened", "edited", "milestoned", "demilestoned",
|
|
// "closed", "reopened", "referenced", "renamed" or anything else
|
|
// that Github adds in the future.
|
|
string event_type = 2;
|
|
int64 actor_id = 3;
|
|
google.protobuf.Timestamp created = 4; // time of the event
|
|
|
|
// label is populated for "labeled" and "unlabeled" events.
|
|
// The label will usually not have an ID, due to Github's API
|
|
// not returning one.
|
|
GithubLabel label = 5;
|
|
|
|
// milestone is populated for "milestoned" and "demilestoned" events.
|
|
// The label will usually not have an ID, due to Github's API
|
|
// not returning one.
|
|
GithubMilestone milestone = 6;
|
|
|
|
// For "assigned", "unassigned":
|
|
int64 assignee_id = 7; // always same as actor_id it seems? Github API doesn't say.
|
|
int64 assigner_id = 8;
|
|
|
|
// For "referenced", "closed":
|
|
GithubCommit commit = 9;
|
|
|
|
// For "renamed" events:
|
|
string rename_from = 11;
|
|
string rename_to = 12;
|
|
|
|
// other_json is usually empty. If Github adds event types or fields
|
|
// in the future, this captures those added fields. If non-empty it
|
|
// will be a JSON object with the fields that weren't understood.
|
|
bytes other_json = 10;
|
|
}
|
|
|
|
message GithubCommit {
|
|
string owner = 1; // "golang"
|
|
string repo = 2; // "go"
|
|
string commit_id = 3; // "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
|
|
}
|
|
|
|
// GithubIssueSyncStatus notes where syncing is at for comments
|
|
// on an issue,
|
|
// This mutation type is only made at/after the same top-level mutation
|
|
// which created the corresponding comments.
|
|
message GithubIssueSyncStatus {
|
|
// server_date is the "Date" response header from Github for the
|
|
// final HTTP response.
|
|
google.protobuf.Timestamp server_date = 1;
|
|
}
|
|
|
|
message GithubIssueCommentMutation {
|
|
int64 id = 1;
|
|
GithubUser user = 2; // not present in edits later
|
|
string body = 3; // may not be present in edits later (if only reactions changed? TODO: investigate)
|
|
google.protobuf.Timestamp created = 4; // not present in edits later
|
|
google.protobuf.Timestamp updated = 5;
|
|
}
|
|
|
|
message GithubUser {
|
|
int64 id = 1;
|
|
string login = 2;
|
|
}
|
|
|
|
message GitMutation {
|
|
GitRepo repo = 1;
|
|
|
|
// commit adds a commit, or adds new information to a commit if fields
|
|
// are added in the future.
|
|
GitCommit commit = 2;
|
|
}
|
|
|
|
// GitRepo identifies a git repo being mutated.
|
|
message GitRepo {
|
|
// If go_repo is set, it identifies a go.googlesource.com/<go_repo> repo.
|
|
string go_repo = 1;
|
|
|
|
// TODO: code.googlesource.com and github repos later.
|
|
}
|
|
|
|
message GitCommit {
|
|
string sha1 = 1; // the full lowercase 40-hex-byte sha1 sum
|
|
|
|
// raw is the "git cat-file commit $sha1" output.
|
|
bytes raw = 2;
|
|
|
|
GitDiffTree diff_tree = 3;
|
|
}
|
|
|
|
// git diff-tree --numstat oldtree newtree
|
|
message GitDiffTree {
|
|
repeated GitDiffTreeFile file = 1;
|
|
}
|
|
|
|
// GitDiffTreeFile represents one line of `git diff-tree --numstat` output.
|
|
message GitDiffTreeFile {
|
|
string file = 1;
|
|
int64 added = 2;
|
|
int64 deleted = 3;
|
|
bool binary = 4;
|
|
}
|
|
|
|
message GerritMutation {
|
|
// Project is the Gerrit server and project, without scheme (https implied) or
|
|
// trailing slash.
|
|
string project = 1; // "go.googlesource.com/go", "go.googlesource.com/net", etc
|
|
|
|
// Commits to add.
|
|
repeated GitCommit commits = 2;
|
|
|
|
// git refs to update.
|
|
repeated GitRef refs = 3;
|
|
}
|
|
|
|
message GitRef {
|
|
// ref is the git ref name, such as:
|
|
// HEAD
|
|
// refs/heads/master
|
|
// refs/changes/00/14700/1
|
|
// refs/changes/00/14700/meta
|
|
// refs/meta/config
|
|
string ref = 1;
|
|
|
|
// sha1 is the lowercase hex sha1
|
|
string sha1 = 2;
|
|
}
|