Documentation ¶
Index ¶
- Constants
- Variables
- func ContainsAny(id int64, changes []*ChangeInfo) bool
- func DefaultGitCookiesPath() string
- func EditChange(ctx context.Context, g GerritInterface, ci *ChangeInfo, ...) (rvErr error)
- func FullChangeId(ci *ChangeInfo) string
- func GitCookieAuthDaemonPath() (string, error)
- func MergeLabels(a, b map[string]int) map[string]int
- func ParseChangeId(msg string) (string, error)
- func SetLabel(ci *ChangeInfo, key string, value int)
- func SetLabels(ci *ChangeInfo, labels map[string]int)
- func UnsetLabel(ci *ChangeInfo, key string, value int)
- func UnsetLabels(ci *ChangeInfo, labels map[string]int)
- type AccountDetails
- type AttentionSetInput
- type ChangeInfo
- func CreateAndEditChange(ctx context.Context, g GerritInterface, ...) (*ChangeInfo, error)
- func CreateCLFromLocalDiffs(ctx context.Context, g GerritInterface, project, branch, commitMsg string, ...) (*ChangeInfo, error)
- func CreateCLWithChanges(ctx context.Context, g GerritInterface, ...) (*ChangeInfo, error)
- type ChangeInfoMessage
- type CodeReviewCache
- type CommitInfo
- type Config
- type FileInfo
- type FileInfoStatus
- type Gerrit
- func (g *Gerrit) Abandon(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) AddCC(ctx context.Context, issue *ChangeInfo, ccList []string) error
- func (g *Gerrit) AddComment(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) Approve(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) Config() *Config
- func (g *Gerrit) CreateChange(ctx context.Context, project, branch, subject, baseCommit, baseChangeID string) (*ChangeInfo, error)
- func (g *Gerrit) CreateCherryPickChange(ctx context.Context, changeID, revisionID, msg, destBranch string) (*ChangeInfo, error)
- func (g *Gerrit) DeleteChangeEdit(ctx context.Context, ci *ChangeInfo) error
- func (g *Gerrit) DeleteFile(ctx context.Context, ci *ChangeInfo, filepath string) error
- func (g *Gerrit) DeleteVote(ctx context.Context, changeNum int64, labelID string, accountID int, ...) error
- func (g *Gerrit) Disapprove(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) DownloadCommitMsgHook(ctx context.Context, dest string) error
- func (g *Gerrit) EditFile(ctx context.Context, ci *ChangeInfo, filepath, content string) error
- func (g *Gerrit) ExtractIssueFromCommit(commitMsg string) (int64, error)
- func (g *Gerrit) Files(ctx context.Context, issue int64, patch string) (map[string]*FileInfo, error)
- func (g *Gerrit) GetChange(ctx context.Context, id string) (*ChangeInfo, error)
- func (g *Gerrit) GetCommit(ctx context.Context, issue int64, revision string) (*CommitInfo, error)
- func (g *Gerrit) GetContent(ctx context.Context, issue int64, revision string, filePath string) (string, error)
- func (g *Gerrit) GetDependencies(ctx context.Context, changeNum int64, revision int) ([]*RelatedChangeAndCommitInfo, error)
- func (g *Gerrit) GetFileNames(ctx context.Context, issue int64, patch string) ([]string, error)
- func (g *Gerrit) GetFilesToContent(ctx context.Context, issue int64, revision string) (map[string]string, error)
- func (g *Gerrit) GetIssueProperties(ctx context.Context, issue int64) (*ChangeInfo, error)
- func (g *Gerrit) GetPatch(ctx context.Context, issue int64, revision string) (string, error)
- func (g *Gerrit) GetRepoUrl() string
- func (g *Gerrit) GetTrybotResults(ctx context.Context, issueID int64, patchsetID int64) ([]*buildbucketpb.Build, error)
- func (g *Gerrit) GetUserEmail(ctx context.Context) (string, error)
- func (g *Gerrit) HasOpenDependency(ctx context.Context, changeNum int64, revision int) (bool, error)
- func (g *Gerrit) Initialized() bool
- func (g *Gerrit) IsBinaryPatch(ctx context.Context, issue int64, revision string) (bool, error)
- func (g *Gerrit) MoveFile(ctx context.Context, ci *ChangeInfo, oldPath, newPath string) error
- func (g *Gerrit) NoScore(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) PublishChangeEdit(ctx context.Context, ci *ChangeInfo) error
- func (g *Gerrit) Rebase(ctx context.Context, ci *ChangeInfo, base string, allowConflicts bool) error
- func (g *Gerrit) RemoveFromCQ(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) Search(ctx context.Context, limit int, sortResults bool, terms ...*SearchTerm) ([]*ChangeInfo, error)
- func (g *Gerrit) SelfApprove(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) SendToCQ(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) SendToDryRun(ctx context.Context, issue *ChangeInfo, message string) error
- func (g *Gerrit) SetCommitMessage(ctx context.Context, ci *ChangeInfo, msg string) error
- func (g *Gerrit) SetReadyForReview(ctx context.Context, ci *ChangeInfo) error
- func (g *Gerrit) SetReview(ctx context.Context, issue *ChangeInfo, message string, labels map[string]int, ...) error
- func (g *Gerrit) SetTopic(ctx context.Context, topic string, changeNum int64) error
- func (g *Gerrit) SetTraceIDPrefix(traceIdPrefix string)
- func (g *Gerrit) Submit(ctx context.Context, ci *ChangeInfo) error
- func (g *Gerrit) SubmittedTogether(ctx context.Context, ci *ChangeInfo) ([]*ChangeInfo, int, error)
- func (g *Gerrit) Url(issueID int64) string
- type GerritInterface
- type LabelDetail
- type LabelEntry
- type NotifyDetails
- type NotifyInfo
- type NotifyOption
- type Person
- type RecipientType
- type RelatedChangeAndCommitInfo
- type RelatedChangesInfo
- type Reviewer
- type Revision
- type SearchTerm
- func SearchBranch(branch string) *SearchTerm
- func SearchCherrypickOf(changeNum int) *SearchTerm
- func SearchCommit(commit string) *SearchTerm
- func SearchLabel(label, value string) *SearchTerm
- func SearchModifiedAfter(after time.Time) *SearchTerm
- func SearchOwner(name string) *SearchTerm
- func SearchProject(project string) *SearchTerm
- func SearchStatus(status string) *SearchTerm
- func SearchTopic(topic string) *SearchTerm
- type SubmittedTogetherInfo
Constants ¶
const ( // TimeFormat is the timestamp format used by the Gerrit API. TimeFormat = "2006-01-02 15:04:05.999999" // GerritSkiaURL is the URL of Skia's Gerrit instance. GerritSkiaURL = "https://skia-review.googlesource.com" // AuthScope is the auth scope needed to use the Gerrit API. AuthScope = auth.ScopeGerrit // ChangeStatusAbandoned indicates the change is abandoned. ChangeStatusAbandoned = "ABANDONED" // ChangeStatusMerged indicates the change is merged. ChangeStatusMerged = "MERGED" // ChangeStatusNew indicates the change is new. ChangeStatusNew = "NEW" // ChangeStatusNew indicates the change is open. ChangeStatusOpen = "OPEN" // LabelCodeReview is the label used for code review. LabelCodeReview = "Code-Review" // LabelCodeReviewDisapprove indicates code review disapproval. LabelCodeReviewDisapprove = -1 // LabelCodeReviewNone indicates that the change has not been code reviewed. LabelCodeReviewNone = 0 // LabelCodeReviewApprove indicates code review approval. LabelCodeReviewApprove = 1 // LabelCodeReviewSelfApprove indicates code review self-approval. LabelCodeReviewSelfApprove = 2 // LabelCommitQueue is the label used for the commit queue. LabelCommitQueue = "Commit-Queue" // LabelCommitQueueNone indicates that the commit queue is not running for // this change. LabelCommitQueueNone = 0 // LabelCommitQueueDryRun indicates that the commit queue should run in dry // run mode for this change. LabelCommitQueueDryRun = 1 // LabelCommitQueueSubmit indicates that the commit queue should run for // this change. LabelCommitQueueSubmit = 2 // LabelAndroidAutoSubmit indicates whether the change should be submitted // when it is approved. For Android hosts only. LabelAndroidAutoSubmit = "Autosubmit" // LabelAndroidAutoSubmitNone indicates that the change should not be // submitted when it is approved. LabelAndroidAutoSubmitNone = 0 // LabelAndroidAutoSubmitSubmit indicates that the change should be // submitted when it is approved. LabelAndroidAutoSubmitSubmit = 1 // LabelChromiumAutoSubmit indicates whether the change should be submitted // when it is approved. For Chromium hosts only. LabelChromiumAutoSubmit = "Auto-Submit" // LabelChromiumAutoSubmitNone indicates that the change should not be // submitted when it is approved. LabelChromiumAutoSubmitNone = 0 // LabelChromiumAutoSubmitSubmit indicates that the change should be // submitted when it is approved. LabelChromiumAutoSubmitSubmit = 1 // LabelPresubmitReady indicates whether the presubmit checks should run for // this change. LabelPresubmitReady = "Presubmit-Ready" // LabelPresubmitReadyNone indicates that the presubmit checks should not // run for this change. LabelPresubmitReadyNone = 0 // LabelPresubmitReadyEnable indicates that the presubmit checks should run // for this change. LabelPresubmitReadyEnable = 1 // LabelPresubmitVerified indicates whether the presubmit checks ran // successfully for this change. LabelPresubmitVerified = "Presubmit-Verified" // LabelPresubmitVerifiedRejected indicates that the presubmit checks failed // for this change. LabelPresubmitVerifiedRejected = -1 // LabelPresubmitVerifiedRunning indicates that the presubmit checks have // not finished for this change. LabelPresubmitVerifiedRunning = 0 // LabelPresubmitVerifiedAccepted indicates that the presubmit checks // succeeded for this change. LabelPresubmitVerifiedAccepted = 2 // LabelVerified indicates whether the presubmit checks ran successfully for // this change. LabelVerified = "Verified" // LabelVerifiedRejected indicates that the presubmit checks failed for this // change. LabelVerifiedRejected = -1 // LabelVerifiedRunning indicates that the presubmit checks have not // finished for this change. LabelVerifiedRunning = 0 // LabelVerifiedAccepted indicates that the presubmit checks succeeded for // this change. LabelVerifiedAccepted = 1 // LabelBotCommit indicates self-approval by a trusted bot. LabelBotCommit = "Bot-Commit" // LabelBotCommitNone indicates that the change is not self-approved by a // trusted bot. LabelBotCommitNone = 0 // LabelBotCommitApproved indicates that the change is self-approved by a // trusted bot. LabelBotCommitApproved = 1 // URLTmplChange is the template for a change URL. URLTmplChange = "/changes/%s/detail?o=ALL_REVISIONS&o=SUBMITTABLE" // Kinds of patchsets. PatchSetKindMergeFirstParentUpdate = "MERGE_FIRST_PARENT_UPDATE" PatchSetKindNoChange = "NO_CHANGE" PatchSetKindNoCodeChange = "NO_CODE_CHANGE" PatchSetKindCodeChange = "CODE_CHANGE" PatchSetKindRework = "REWORK" PatchSetKindTrivialRebase = "TRIVIAL_REBASE" // ChangeRefPrefix is the prefix used by change refs in Gerrit, which are of // this form: // // refs/changes/46/4546/1 // | | | // | | +-> Patch set. // | | // | +-> Issue ID. // | // +-> Last two digits of Issue ID. ChangeRefPrefix = "refs/changes/" // ErrCannotRebaseMergeCommits as a substring of an error indicates that we // tried to rebase a merge commit. ErrCannotRebaseMergeCommits = "Cannot rebase merge commits" // ErrMergeConflict as a substring of an error message indicates that a // merge conflict occurred. ErrMergeConflict = "conflict during merge" // ErrUnsubmittedDependend as a substring of an error message indicates // that a dependend CL has not been submitted yet. ErrUnsubmittedDependend = "Depends on change that was not submitted" // ErrEmptyCommit as a substring of an error message indicates that // submission was rejected due to an empty commit. ErrEmptyCommit = "Change could not be merged because the commit is empty" // ErrNoChanges as a substring of an error message indicates that there were // no changes to apply. Generally we can ignore this error. ErrNoChanges = "no changes were made" // Gerrit's magic path for the commit message. See: // https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#file-id CommitMsgFileName = "/COMMIT_MSG" // HTTP header used to enable tracing. HeaderTracing = "X-Gerrit-Trace" )
const RecipientBCC = "BCC"
const RecipientCC = "CC"
const RecipientTo = "TO"
Variables ¶
var ( // ConfigAndroid is the configuration for Android Gerrit hosts. ConfigAndroid = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewSelfApprove, }, HasCq: true, SetCqLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitReady: LabelPresubmitReadyEnable, }, SetDryRunLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyEnable, }, NoCqLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyNone, }, CqActiveLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitReady: LabelPresubmitReadyEnable, }, CqSuccessLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitVerified: LabelPresubmitVerifiedAccepted, }, CqFailureLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitVerified: LabelPresubmitVerifiedRejected, }, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyEnable, }, DryRunSuccessLabels: map[string]int{ LabelPresubmitVerified: LabelPresubmitVerifiedAccepted, }, DryRunFailureLabels: map[string]int{ LabelPresubmitVerified: LabelPresubmitVerifiedRejected, }, DryRunUsesTryjobResults: false, } // ConfigAndroidNoCR is the configuration for Android Gerrit hosts where // the service account does not have CR+2 access. ConfigAndroidNoCR = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewNone, }, HasCq: true, SetCqLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitReady: LabelPresubmitReadyEnable, }, SetDryRunLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyEnable, }, NoCqLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyNone, }, CqActiveLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitReady: LabelPresubmitReadyEnable, }, CqSuccessLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitVerified: LabelPresubmitVerifiedAccepted, }, CqFailureLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitVerified: LabelPresubmitVerifiedRejected, }, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyEnable, }, DryRunSuccessLabels: map[string]int{ LabelPresubmitVerified: LabelPresubmitVerifiedAccepted, }, DryRunFailureLabels: map[string]int{ LabelPresubmitVerified: LabelPresubmitVerifiedRejected, }, DryRunUsesTryjobResults: false, } // ConfigAndroidNoCRNoPR is the configuration for Android Gerrit hosts where // the service account does not have CR+2 and PR+1 access. ConfigAndroidNoCRNoPR = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewNone, }, HasCq: true, SetCqLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitReady: LabelPresubmitReadyNone, }, SetDryRunLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyNone, }, NoCqLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitNone, LabelPresubmitReady: LabelPresubmitReadyNone, }, CqActiveLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitReady: LabelPresubmitReadyEnable, }, CqSuccessLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitVerified: LabelPresubmitVerifiedAccepted, }, CqFailureLabels: map[string]int{ LabelAndroidAutoSubmit: LabelAndroidAutoSubmitSubmit, LabelPresubmitVerified: LabelPresubmitVerifiedRejected, }, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{}, DryRunSuccessLabels: map[string]int{ LabelPresubmitVerified: LabelPresubmitVerifiedAccepted, }, DryRunFailureLabels: map[string]int{ LabelPresubmitVerified: LabelPresubmitVerifiedRejected, }, DryRunUsesTryjobResults: false, } // ConfigANGLE is the configuration for ANGLE Gerrit hosts. ConfigANGLE = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewSelfApprove, }, HasCq: true, SetCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, SetDryRunLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, CqSuccessLabels: map[string]int{}, CqFailureLabels: map[string]int{}, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, DryRunSuccessLabels: map[string]int{}, DryRunFailureLabels: map[string]int{}, DryRunUsesTryjobResults: true, } // ConfigChromium is the configuration for Chromium Gerrit hosts. ConfigChromium = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewApprove, }, HasCq: true, SetCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, SetDryRunLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, CqSuccessLabels: map[string]int{}, CqFailureLabels: map[string]int{}, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, DryRunSuccessLabels: map[string]int{}, DryRunFailureLabels: map[string]int{}, DryRunUsesTryjobResults: true, } // ConfigChromiumBotCommit is the configuration for Chromium Gerrit hosts // which use the Bot-Commit label instead of Code-Review. ConfigChromiumBotCommit = &Config{ SelfApproveLabels: map[string]int{ LabelBotCommit: LabelBotCommitApproved, }, HasCq: true, SetCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, LabelBotCommit: LabelBotCommitApproved, }, SetDryRunLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, LabelBotCommit: LabelBotCommitApproved, }, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, CqSuccessLabels: map[string]int{}, CqFailureLabels: map[string]int{}, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, DryRunSuccessLabels: map[string]int{}, DryRunFailureLabels: map[string]int{}, DryRunUsesTryjobResults: true, } // ConfigChromiumNoCR is the configuration for Chromium Gerrit hosts // where the service account is not allowed to approve its own changes. ConfigChromiumNoCR = &Config{ SelfApproveLabels: map[string]int{}, HasCq: true, SetCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, SetDryRunLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, CqSuccessLabels: map[string]int{}, CqFailureLabels: map[string]int{}, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, DryRunSuccessLabels: map[string]int{}, DryRunFailureLabels: map[string]int{}, DryRunUsesTryjobResults: true, } // ConfigChromiumNoCQ is the configuration for Chromium Gerrit hosts which // have no commit queue. ConfigChromiumNoCQ = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewApprove, }, HasCq: false, SetCqLabels: map[string]int{}, SetDryRunLabels: map[string]int{}, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{}, CqSuccessLabels: map[string]int{}, CqFailureLabels: map[string]int{}, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{}, DryRunSuccessLabels: map[string]int{}, DryRunFailureLabels: map[string]int{}, DryRunUsesTryjobResults: false, } // ConfigChromiumBotCommitNoCQ is the configuration for Chromium Gerrit // hosts which have no commit queue. ConfigChromiumBotCommitNoCQ = &Config{ SelfApproveLabels: map[string]int{ LabelBotCommit: LabelBotCommitApproved, }, HasCq: false, SetCqLabels: map[string]int{}, SetDryRunLabels: map[string]int{}, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{}, CqSuccessLabels: map[string]int{}, CqFailureLabels: map[string]int{}, CqLabelsUnsetOnCompletion: true, DryRunActiveLabels: map[string]int{}, DryRunSuccessLabels: map[string]int{}, DryRunFailureLabels: map[string]int{}, DryRunUsesTryjobResults: false, } // ConfigLibAssistant is the configuration for LibAssistant Gerrit hosts. ConfigLibAssistant = &Config{ SelfApproveLabels: map[string]int{ LabelCodeReview: LabelCodeReviewSelfApprove, }, HasCq: true, SetCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, SetDryRunLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, NoCqLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueNone, }, CqActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueSubmit, }, CqSuccessLabels: map[string]int{ LabelVerified: LabelVerifiedAccepted, }, CqFailureLabels: map[string]int{ LabelVerified: LabelVerifiedRejected, }, CqLabelsUnsetOnCompletion: false, DryRunActiveLabels: map[string]int{ LabelCommitQueue: LabelCommitQueueDryRun, }, DryRunSuccessLabels: map[string]int{ LabelVerified: LabelVerifiedAccepted, }, DryRunFailureLabels: map[string]int{ LabelVerified: LabelVerifiedRejected, }, DryRunUsesTryjobResults: false, } )
var ( // ErrNotFound indicates that the requested item was not found. ErrNotFound = errors.New("Requested item was not found") // ErrBothChangeAndCommitID indicates that both commit and changeID were set. ErrBothChangeAndCommitID = errors.New("commit and change ID cannot both be set") )
var AllFileInfoStatus = []FileInfoStatus{ FileAdded, FileCopied, FileDeleted, FileModified, FileRenamed, FileRewritten, }
AllFileInfoStatus is all valid values of type FileInfoStatus.
var ( // ErrEmptyChange indicates that a change, if it were to be made, would be // empty (i.e. have no modified files). ErrEmptyChange = errors.New("resultant change would be empty") )
var ( TrivialPatchSetKinds = []string{ PatchSetKindTrivialRebase, PatchSetKindNoChange, PatchSetKindNoCodeChange, } )
Functions ¶
func ContainsAny ¶
func ContainsAny(id int64, changes []*ChangeInfo) bool
ContainsAny returns true if the provided ChangeInfo slice contains any change with the same issueID as id.
func DefaultGitCookiesPath ¶
func DefaultGitCookiesPath() string
DefaultGitCookiesPath returns the default cookie file. The return value can be used as the input to NewGerrit. If it cannot be retrieved an error will be logged and the empty string is returned.
func EditChange ¶
func EditChange(ctx context.Context, g GerritInterface, ci *ChangeInfo, fn func(context.Context, GerritInterface, *ChangeInfo) error) (rvErr error)
EditChange is a helper for creating a new patch set on an existing Change. Pass in a function which creates and modifies a ChangeEdit, and the result will be automatically published as a new patch set, or in the case of failure, reverted.
func FullChangeId ¶
func FullChangeId(ci *ChangeInfo) string
FullChangeId returns the most specific representation of the specified change. See https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-id
func GitCookieAuthDaemonPath ¶
GitCookieAuthDaemonPath returns the default path that git_cookie_authdaemon writes to. See infra/git_cookie_authdaemon
func MergeLabels ¶
MergeLabels returns a new map containing both sets of labels. Labels from the second set overwrite matching labels from the first.
func ParseChangeId ¶
ParseChangeId parses the change ID out of the given commit message.
func SetLabel ¶
func SetLabel(ci *ChangeInfo, key string, value int)
SetLabel sets the given label on the ChangeInfo.
func SetLabels ¶
func SetLabels(ci *ChangeInfo, labels map[string]int)
SetLabels sets the given labels on the ChangeInfo.
func UnsetLabel ¶
func UnsetLabel(ci *ChangeInfo, key string, value int)
UnsetLabel unsets the given label on the ChangeInfo.
func UnsetLabels ¶
func UnsetLabels(ci *ChangeInfo, labels map[string]int)
UnsetLabels unsets the given labels on the ChangeInfo.
Types ¶
type AccountDetails ¶
type AccountDetails struct { AccountId int64 `json:"_account_id"` Name string `json:"name"` Email string `json:"email"` UserName string `json:"username"` }
AccountDetails provides details about an account in Gerrit.
type AttentionSetInput ¶
type ChangeInfo ¶
type ChangeInfo struct { Id string `json:"id"` Insertions int `json:"insertions"` Deletions int `json:"deletions"` Created time.Time `json:"-"` CreatedString string `json:"created"` Updated time.Time `json:"-"` UpdatedString string `json:"updated"` Submitted time.Time `json:"-"` SubmittedString string `json:"submitted"` Project string `json:"project"` ChangeId string `json:"change_id"` Subject string `json:"subject"` Branch string `json:"branch"` Committed bool `json:"committed"` Messages []ChangeInfoMessage `json:"messages"` Reviewers struct { CC []*Person `json:"CC"` Reviewer []*Person `json:"REVIEWER"` } `json:"reviewers"` Revisions map[string]*Revision `json:"revisions"` Patchsets []*Revision `json:"-"` MoreChanges bool `json:"_more_changes"` Issue int64 `json:"_number"` Labels map[string]*LabelEntry `json:"labels"` Owner *Person `json:"owner"` Status string `json:"status"` Submittable bool `json:"submittable"` Topic string `json:"topic"` WorkInProgress bool `json:"work_in_progress"` CherrypickOfChange int `json:"cherry_pick_of_change"` CherrypickOfPatchSet int `json:"cherry_pick_of_patch_set"` }
ChangeInfo contains information about a Gerrit issue.
func CreateAndEditChange ¶
func CreateAndEditChange(ctx context.Context, g GerritInterface, project, branch, commitMsg, baseCommit, baseChangeID string, fn func(context.Context, GerritInterface, *ChangeInfo) error) (*ChangeInfo, error)
CreateAndEditChange is a helper which creates a new Change in the given project based on the given branch with the given commit message. Pass in a function which modifies a ChangeEdit, and the result will be automatically published as a new patch set, or in the case of failure, reverted. If an error is encountered after the Change is created, the ChangeInfo is returned so that the caller can decide whether to abandon the change or try again.
func CreateCLFromLocalDiffs ¶
func CreateCLFromLocalDiffs(ctx context.Context, g GerritInterface, project, branch, commitMsg string, reviewers []string, co *git.Checkout) (*ChangeInfo, error)
CreateCLFromLocalDiffs is a helper which creates a Change based on the diffs from the provided branch in a local checkout. Note that the diff is performed against the given branch on "origin", and not any local version.
func CreateCLWithChanges ¶
func CreateCLWithChanges(ctx context.Context, g GerritInterface, project, branch, commitMsg, baseCommit, baseChangeID string, changes map[string]string, reviewers []string) (*ChangeInfo, error)
CreateCLWithChanges is a helper which creates a new Change in the given project based on the given branch with the given commit message and the given map of filepath to new file contents. Empty file contents indicate deletion of the file. If reviewers are provided, the change is sent for review.
func (*ChangeInfo) GetAbandonReason ¶
func (ci *ChangeInfo) GetAbandonReason(ctx context.Context) string
GetAbandonReason returns the reason entered by the user that abandoned the change.
func (*ChangeInfo) GetNonTrivialPatchSets ¶
func (ci *ChangeInfo) GetNonTrivialPatchSets() []*Revision
GetNonTrivialPatchSets finds the set of non-trivial patchsets. Returns the Revisions in order of patchset number. Note that this is only correct for Chromium Gerrit instances because it makes Chromium-specific assumptions.
func (*ChangeInfo) GetPatchsetIDs ¶
func (ci *ChangeInfo) GetPatchsetIDs() []int64
GetPatchsetIDs is a convenience function that returns the sorted list of patchset IDs.
func (*ChangeInfo) IsClosed ¶
func (ci *ChangeInfo) IsClosed() bool
IsClosed returns true iff the issue corresponding to the ChangeInfo is abandoned or merged.
func (*ChangeInfo) IsMerged ¶
func (ci *ChangeInfo) IsMerged() bool
IsMerged returns true iff the issue corresponding to the ChangeInfo is merged.
type ChangeInfoMessage ¶
ChangeInfoMessage contains information about Gerrit messages.
type CodeReviewCache ¶
type CodeReviewCache struct {
// contains filtered or unexported fields
}
CodeReviewCache is an LRU cache for Gerrit Issues that polls in the background to determine if issues have been updated. If so it expels them from the cache to force a reload.
func NewCodeReviewCache ¶
func NewCodeReviewCache(gerritAPI *Gerrit, pollInterval time.Duration, cacheSize int) *CodeReviewCache
NewCodeReviewCache returns a new cache for the given API instance, poll interval and maximum cache size.
func (*CodeReviewCache) Add ¶
func (c *CodeReviewCache) Add(key int64, value *ChangeInfo)
Add an issue to the cache.
func (*CodeReviewCache) Get ¶
func (c *CodeReviewCache) Get(key int64) (*ChangeInfo, bool)
Get retrieves an issue from the cache.
type CommitInfo ¶
type CommitInfo struct { Commit string `json:"commit"` Parents []*CommitInfo `json:"parents"` Subject string `json:"subject"` Message string `json:"message"` Author *Person `json:"author"` }
CommitInfo captures information about the commit of a revision (patchset) See https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#commit-info
type Config ¶
type Config struct { // Labels to set to self-approve a change. For some projects this is the // same as a normal approval. SelfApproveLabels map[string]int // Whether or not this project has a Commit Queue. HasCq bool // Labels to set to run the Commit Queue. SetCqLabels map[string]int // Labels to set to run the Commit Queue in dry run mode. SetDryRunLabels map[string]int // Labels to set to remove from the Commit Queue. NoCqLabels map[string]int // If the issue is open and all of these labels are set, the Commit // Queue is considered active. CqActiveLabels map[string]int // If the issue is merged or all of these labels are set, the Commit // Queue is considered to have finished successfully. CqSuccessLabels map[string]int // If the issue is abandoned or all of these labels are set, the Commit // Queue is considered to have failed. CqFailureLabels map[string]int // CqLabelsUnsetOnCompletion is true if the commit queue unsets the // labels when it finishes. CqLabelsUnsetOnCompletion bool // If the issue is open and all of these labels are set, the dry run is // considered active. DryRunActiveLabels map[string]int // If the issue is merged or all of these labels are set, the dry run is // considered to have finished successfuly. DryRunSuccessLabels map[string]int // If the issue is abandoned or all of these labels are set, the dry run // is considered to have failed. DryRunFailureLabels map[string]int // DryRunUsesTryjobResults is true if tryjob results should be factored // into dry run success. DryRunUsesTryjobResults bool }
Config describes the configuration for a Gerrit host. TODO(borenet): Consider making Config into an interface with function calls for the various sets of labels and logic below. This format nicely groups the logic into one place but makes it difficult to understand and change.
func (*Config) CqRunning ¶
func (c *Config) CqRunning(ci *ChangeInfo) bool
CqRunning returns true if the commit queue is still running. Returns false if the change is merged or abandoned.
func (*Config) CqSuccess ¶
func (c *Config) CqSuccess(ci *ChangeInfo) bool
CqSuccess returns true if the commit queue has finished successfully. This requires that the change is merged; CqSuccess returns false if the change is not merged, even if the commit queue finishes (ie. the relevant label is removed) and all trybots were successful or a CqSuccessLabel is applied.
func (*Config) DryRunRunning ¶
func (c *Config) DryRunRunning(ci *ChangeInfo) bool
DryRunRunning returns true if the dry run is still running. Returns false if the change is merged or abandoned.
func (*Config) DryRunSuccess ¶
func (c *Config) DryRunSuccess(ci *ChangeInfo, allTrybotsSucceeded bool) bool
DryRunSuccess returns true if the dry run succeeded. The allTrybotsSucceeded parameter indicates whether or not all of the relevant trybots for this change succeeded; it is unused if Config.DryRunUsesTryjobResults is false.
type FileInfo ¶
type FileInfo struct { Status FileInfoStatus `json:"status"` Binary bool `json:"binary"` OldPath string `json:"old_path"` LinesInserted int `json:"lines_inserted"` LinesDeleted int `json:"lines_deleted"` SizeDelta int `json:"size_delta"` Size int `json:"size"` }
FileInfo provides information about changes to a File in Gerrit.
type FileInfoStatus ¶
type FileInfoStatus string
FileInfoStatus is the type of 'Status' in FileInfo. https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#file-info
const ( FileAdded FileInfoStatus = "A" FileCopied FileInfoStatus = "C" FileDeleted FileInfoStatus = "D" FileModified FileInfoStatus = "" FileRenamed FileInfoStatus = "R" FileRewritten FileInfoStatus = "W" )
type Gerrit ¶
type Gerrit struct { BuildbucketClient *buildbucket.Client // contains filtered or unexported fields }
Gerrit is an object used for interacting with the issue tracker.
func NewGerritWithConfig ¶
NewGerritWithConfig returns a new Gerrit instance which uses the given Config.
func NewGerritWithConfigAndRateLimits ¶
func NewGerritWithConfigAndRateLimits(cfg *Config, gerritUrl string, client *http.Client, maxQPS float64, maxBurst int) (*Gerrit, error)
NewGerritWithConfigAndRateLimits returns a new Gerrit instance which uses the given Config and rate limit options.
func (*Gerrit) AddComment ¶
AddComment adds a message to the issue.
func (*Gerrit) CreateChange ¶
func (g *Gerrit) CreateChange(ctx context.Context, project, branch, subject, baseCommit, baseChangeID string) (*ChangeInfo, error)
CreateChange creates a new Change in the given project, based on a given Git commit or Gerrit change ID, on on the given branch, and with the given subject line.
func (*Gerrit) CreateCherryPickChange ¶
func (g *Gerrit) CreateCherryPickChange(ctx context.Context, changeID, revisionID, msg, destBranch string) (*ChangeInfo, error)
CreateCherryPickChange will cherry-pick a revision into a destination branch.
https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#cherry-pick
- changeID: Identifier that uniquely identifies one change. It contains the URL-encoded project name as well as the change number: "'<project>~<changeNumber>'"
- revisionID: Identifier that uniquely identifies one revision of a change.
- msg: Text to be added as a commit message.
- destBranch: The cherry-pick destination branch.
func (*Gerrit) DeleteChangeEdit ¶
func (g *Gerrit) DeleteChangeEdit(ctx context.Context, ci *ChangeInfo) error
DeleteChangeEdit deletes the active ChangeEdit, restoring the state to the last patch set.
func (*Gerrit) DeleteFile ¶
DeleteFile deletes the given file. A ChangeEdit is created, if one is not already active. You must call PublishChangeEdit in order for the change to become a new patch set, otherwise it has no effect.
func (*Gerrit) DeleteVote ¶
func (g *Gerrit) DeleteVote(ctx context.Context, changeNum int64, labelID string, accountID int, notify NotifyOption, ignoreAutomaticAttentionSetRules bool) error
DeleteVote deletes a single vote from a change. Documentation is here: https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#delete-vote
func (*Gerrit) Disapprove ¶
Disapprove sets the Code Review label to indicate disapproval.
func (*Gerrit) DownloadCommitMsgHook ¶
DownloadCommitMsgHook downloads the commit message hook to the specified location.
func (*Gerrit) EditFile ¶
EditFile modifies the given file to have the given content. A ChangeEdit is created, if one is not already active. You must call PublishChangeEdit in order for the change to become a new patch set, otherwise it has no effect.
func (*Gerrit) ExtractIssueFromCommit ¶
ExtractIssueFromCommit returns the issue id by parsing the commit message of a landed commit. It expects the commit message to contain one line in this format:
Reviewed-on: https://skia-review.googlesource.com/999999
where the digits at the end are the issue id.
func (*Gerrit) Files ¶
func (g *Gerrit) Files(ctx context.Context, issue int64, patch string) (map[string]*FileInfo, error)
Files returns the files that were modified, added or deleted in a revision. https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-files
func (*Gerrit) GetCommit ¶
GetCommit retrieves the commit that corresponds to the patch identified by issue and revision. It allows to retrieve the parent commit on which the given patchset is based on. See: https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#get-commit
func (*Gerrit) GetContent ¶
func (g *Gerrit) GetContent(ctx context.Context, issue int64, revision string, filePath string) (string, error)
GetContent gets the content of a file from the specified revision. See: https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#get-content
func (*Gerrit) GetDependencies ¶
func (g *Gerrit) GetDependencies(ctx context.Context, changeNum int64, revision int) ([]*RelatedChangeAndCommitInfo, error)
GetDependencies returns a slice of all dependencies around the specified change. See https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#get-related-changes
func (*Gerrit) GetFileNames ¶
GetFileNames returns the list of files for the given issue at the given patch. If patch is the empty string then the most recent patch is queried.
func (*Gerrit) GetFilesToContent ¶
func (g *Gerrit) GetFilesToContent(ctx context.Context, issue int64, revision string) (map[string]string, error)
GetFilesToContent returns a map of files in the specified issue+revision to their content.
func (*Gerrit) GetIssueProperties ¶
GetIssueProperties returns a fully filled-in ChangeInfo object, as opposed to the partial data returned by Gerrit's search endpoint. If the given issue cannot be found ErrNotFound is returned as error.
func (*Gerrit) GetPatch ¶
GetPatch returns the formatted patch for one revision. Documentation is here: https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#get-patch
func (*Gerrit) GetRepoUrl ¶
GetRepoUrl returns the url of the Googlesource repo.
func (*Gerrit) GetTrybotResults ¶
func (g *Gerrit) GetTrybotResults(ctx context.Context, issueID int64, patchsetID int64) ([]*buildbucketpb.Build, error)
GetTrybotResults retrieves the trybot results for the given change from BuildBucket.
func (*Gerrit) GetUserEmail ¶
GetUserEmail returns the Gerrit user's email address.
func (*Gerrit) HasOpenDependency ¶
func (g *Gerrit) HasOpenDependency(ctx context.Context, changeNum int64, revision int) (bool, error)
HasOpenDependency returns true if there is an active direct dependency of the specified change.
func (*Gerrit) Initialized ¶
Initialized returns false if the implementation of GerritInterface has not been initialized (i.e. it is a pointer to nil).
func (*Gerrit) IsBinaryPatch ¶
IsBinaryPatch returns true if the patch contains any binary files.
func (*Gerrit) MoveFile ¶
MoveFile moves a given file. A ChangeEdit is created, if one is not already active. You must call PublishChangeEdit in order for the change to become a new patch set, otherwise it has no effect.
func (*Gerrit) PublishChangeEdit ¶
func (g *Gerrit) PublishChangeEdit(ctx context.Context, ci *ChangeInfo) error
PublishChangeEdit publishes the active ChangeEdit as a new patch set.
func (*Gerrit) Rebase ¶
func (g *Gerrit) Rebase(ctx context.Context, ci *ChangeInfo, base string, allowConflicts bool) error
Rebase the given change onto the given optional base. If not provided, the change is rebased onto the target branch. If allowConflicts is true, the rebase succeeds even if there are conflicts, in which case the patch set will contain git conflict markers.
func (*Gerrit) RemoveFromCQ ¶
RemoveFromCQ unsets the Commit Queue labels on the Change.
func (*Gerrit) Search ¶
func (g *Gerrit) Search(ctx context.Context, limit int, sortResults bool, terms ...*SearchTerm) ([]*ChangeInfo, error)
Search returns a slice of Issues which fit the given criteria.
func (*Gerrit) SelfApprove ¶
SelfApprove sets the Code Review label to indicate self-approval.
func (*Gerrit) SendToDryRun ¶
SendToDryRun sets the Commit Queue dry run labels on the Change.
func (*Gerrit) SetCommitMessage ¶
SetCommitMessage sets the commit message for the ChangeEdit. A ChangeEdit is created, if one is not already active. You must call PublishChangeEdit in order for the change to become a new patch set, otherwise it has no effect.
func (*Gerrit) SetReadyForReview ¶
func (g *Gerrit) SetReadyForReview(ctx context.Context, ci *ChangeInfo) error
SetReadyForReview marks the change as ready for review (ie, not WIP).
func (*Gerrit) SetReview ¶
func (g *Gerrit) SetReview(ctx context.Context, issue *ChangeInfo, message string, labels map[string]int, reviewers []string, notify NotifyOption, notifyDetails NotifyDetails, tag string, onBehalfOf int, attentionSetInputs []*AttentionSetInput) error
SetReview calls the Set Review endpoint of the Gerrit API to add messages and/or set labels for the latest patchset. API documentation: https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#set-review notifyDetails contains additional information about whom to notify about the update. See details in https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#review-input onBehalfOf is expected to be the accountId the review should be posted on behalf of. Set to 0 to not use this functionality. attentionSetInputs contains details for adding users to the attension set. See details in https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#attention-set-input
func (*Gerrit) SetTraceIDPrefix ¶
SetTraceIDPrefix enables tracing for all requests, with the given prefix. The full trace ID consists of the prefix and the timestamp of the request. If an empty string is provided, tracing is disabled. It is recommended to use an issue number for the trace ID, eg. "issue/123"
func (*Gerrit) Submit ¶
func (g *Gerrit) Submit(ctx context.Context, ci *ChangeInfo) error
Submit submits the Change.
func (*Gerrit) SubmittedTogether ¶
func (g *Gerrit) SubmittedTogether(ctx context.Context, ci *ChangeInfo) ([]*ChangeInfo, int, error)
SubmittedTogether returns list of all changes which are submitted when Submit is called for this change, including the current change itself. If the user calling the API does not have access to some changes then non_visible_changes will be > 0.
type GerritInterface ¶
type GerritInterface interface { Abandon(context.Context, *ChangeInfo, string) error AddComment(context.Context, *ChangeInfo, string) error AddCC(context.Context, *ChangeInfo, []string) error Approve(context.Context, *ChangeInfo, string) error Config() *Config CreateChange(context.Context, string, string, string, string, string) (*ChangeInfo, error) CreateCherryPickChange(context.Context, string, string, string, string) (*ChangeInfo, error) DeleteChangeEdit(context.Context, *ChangeInfo) error DeleteFile(context.Context, *ChangeInfo, string) error DeleteVote(context.Context, int64, string, int, NotifyOption, bool) error Disapprove(context.Context, *ChangeInfo, string) error DownloadCommitMsgHook(ctx context.Context, dest string) error EditFile(context.Context, *ChangeInfo, string, string) error ExtractIssueFromCommit(string) (int64, error) Files(ctx context.Context, issue int64, patch string) (map[string]*FileInfo, error) GetChange(ctx context.Context, id string) (*ChangeInfo, error) GetCommit(ctx context.Context, issue int64, revision string) (*CommitInfo, error) GetContent(context.Context, int64, string, string) (string, error) GetFileNames(ctx context.Context, issue int64, patch string) ([]string, error) GetFilesToContent(ctx context.Context, issue int64, revision string) (map[string]string, error) GetIssueProperties(context.Context, int64) (*ChangeInfo, error) GetPatch(context.Context, int64, string) (string, error) GetRepoUrl() string GetTrybotResults(context.Context, int64, int64) ([]*buildbucketpb.Build, error) GetUserEmail(context.Context) (string, error) Initialized() bool IsBinaryPatch(ctx context.Context, issue int64, patch string) (bool, error) MoveFile(context.Context, *ChangeInfo, string, string) error NoScore(context.Context, *ChangeInfo, string) error PublishChangeEdit(context.Context, *ChangeInfo) error Rebase(context.Context, *ChangeInfo, string, bool) error RemoveFromCQ(context.Context, *ChangeInfo, string) error Search(context.Context, int, bool, ...*SearchTerm) ([]*ChangeInfo, error) SelfApprove(context.Context, *ChangeInfo, string) error SendToCQ(context.Context, *ChangeInfo, string) error SendToDryRun(context.Context, *ChangeInfo, string) error SetCommitMessage(context.Context, *ChangeInfo, string) error SetReadyForReview(context.Context, *ChangeInfo) error SetReview(context.Context, *ChangeInfo, string, map[string]int, []string, NotifyOption, NotifyDetails, string, int, []*AttentionSetInput) error SetTopic(context.Context, string, int64) error SetTraceIDPrefix(traceIdPrefix string) Submit(context.Context, *ChangeInfo) error SubmittedTogether(context.Context, *ChangeInfo) ([]*ChangeInfo, int, error) Url(int64) string }
GerritInterface describes interactions with a Gerrit host.
type LabelDetail ¶
type LabelDetail struct { Name string `json:"name"` Email string `json:"email"` Date string `json:"date"` Value int `json:"value"` AccountID int `json:"_account_id"` }
LabelDetail provides details about a label set on a Change in Gerrit.
type LabelEntry ¶
type LabelEntry struct { All []*LabelDetail Values map[string]string DefaultValue int }
LabelEntry describes a label set on a Change in Gerrit.
type NotifyDetails ¶
type NotifyDetails map[RecipientType]*NotifyInfo
type NotifyInfo ¶
type NotifyInfo struct {
Accounts []string `json:"accounts"`
}
type NotifyOption ¶
type NotifyOption string
The different notify options supported by Gerrit. See the notify property in https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#review-input
const NotifyAll NotifyOption = "ALL"
const NotifyDefault NotifyOption = ""
const NotifyNone NotifyOption = "NONE"
const NotifyOwner NotifyOption = "OWNER"
const NotifyOwnerReviewers NotifyOption = "OWNER_REVIEWERS"
type Person ¶
type Person struct { AccountID int `json:"_account_id"` Email string `json:"email"` Name string `json:"name"` }
Person describes a person in Gerrit.
type RecipientType ¶
type RecipientType string
The different recipient types supported by Gerrit. https://gerrit-review.googlesource.com/Documentation/user-notify.html#recipient-types
type RelatedChangeAndCommitInfo ¶
type RelatedChangeAndCommitInfo struct { ChangeId string `json:"change_id"` Issue int64 `json:"_change_number"` Revision int64 `json:"_revision_number"` Status string `json:"status"` }
RelatedChangeAndCommitInfo entity contains information about a related change and commit.
type RelatedChangesInfo ¶
type RelatedChangesInfo struct {
Changes []*RelatedChangeAndCommitInfo `json:"changes"`
}
The RelatedChangesInfo entity contains information about related changes.
type Revision ¶
type Revision struct { ID string `json:"-"` Number int64 `json:"_number"` CreatedString string `json:"created"` Created time.Time `json:"-"` Kind string `json:"kind"` Ref string `json:"ref"` }
Revision is the information associated with a patchset in Gerrit.
type SearchTerm ¶
SearchTerm is a wrapper for search terms to pass into the Search method.
func SearchBranch ¶
func SearchBranch(branch string) *SearchTerm
SearchBranch is a SearchTerm used for filtering by branch.
func SearchCherrypickOf ¶
func SearchCherrypickOf(changeNum int) *SearchTerm
SearchCherrypickOf is a SearchTerm used for finding all cherrypicks of the specified change.
func SearchCommit ¶
func SearchCommit(commit string) *SearchTerm
SearchCommit is a SearchTerm used for filtering by commit.
func SearchLabel ¶
func SearchLabel(label, value string) *SearchTerm
SearchLabel is a SearchTerm used for filtering by label.
func SearchModifiedAfter ¶
func SearchModifiedAfter(after time.Time) *SearchTerm
SearchModifiedAfter is a SearchTerm used for finding issues modified after a particular time.Time. API documentation is here: https://review.openstack.org/Documentation/user-search.html
func SearchOwner ¶
func SearchOwner(name string) *SearchTerm
SearchOwner is a SearchTerm used for filtering by issue owner. API documentation is here: https://review.openstack.org/Documentation/user-search.html
func SearchProject ¶
func SearchProject(project string) *SearchTerm
SearchProject is a SearchTerm used for filtering by project.
func SearchStatus ¶
func SearchStatus(status string) *SearchTerm
SearchStatus is a SearchTerm used for filtering by status.
func SearchTopic ¶
func SearchTopic(topic string) *SearchTerm
SearchTopic is a SearchTerm used for filtering by topic.
type SubmittedTogetherInfo ¶
type SubmittedTogetherInfo struct { Changes []*ChangeInfo `json:"changes"` NonVisibleChanges int `json:"non_visible_changes"` }
The SubmittedTogetherInfo entity contains information about submitted together changes.
Directories ¶
Path | Synopsis |
---|---|
Package rubberstamper contains some utilities for having the RubberStamper bot automatically submit a CL.
|
Package rubberstamper contains some utilities for having the RubberStamper bot automatically submit a CL. |