Documentation ¶
Overview ¶
Package gerrit contains code to interact with Gerrit servers.
Index ¶
- Variables
- type AccountInfo
- type ApprovalInfo
- type Auth
- type BranchInfo
- type ChangeInfo
- type ChangeMessageInfo
- type Client
- func (c *Client) AbandonChange(changeID string) error
- func (c *Client) CreateProject(name string, p ...ProjectInput) (ProjectInfo, error)
- func (c *Client) GetAccountInfo(accountID string) (AccountInfo, error)
- func (c *Client) GetChangeDetail(changeID string) (*ChangeInfo, error)
- func (c *Client) GetProjectBranches(name string) (map[string]BranchInfo, error)
- func (c *Client) GetProjectInfo(name string) (ProjectInfo, error)
- func (c *Client) QueryChanges(q string, opts ...QueryChangesOpt) ([]*ChangeInfo, error)
- func (c *Client) SetReview(changeID, revision string, review ReviewInput) error
- type CommitInfo
- type FetchInfo
- type FileInfo
- type GitPersonInfo
- type HTTPError
- type LabelInfo
- type ProjectInfo
- type ProjectInput
- type QueryChangesOpt
- type ReviewInput
- type RevisionInfo
- type TimeStamp
Constants ¶
This section is empty.
Variables ¶
var ErrProjectNotExist = errors.New("gerrit: requested project does not exist")
ErrProjectNotExist is returned when a project doesn't exist. It is not necessarily returned unless a method is documented as returning it.
var NoAuth = noAuth{}
NoAuth makes requests unauthenticated.
Functions ¶
This section is empty.
Types ¶
type AccountInfo ¶
type AccountInfo struct { NumericID int64 `json:"_account_id"` Name string `json:"name,omitempty"` Email string `json:"email,omitempty"` Username string `json:"username,omitempty"` }
func (*AccountInfo) Equal ¶
func (ai *AccountInfo) Equal(v *AccountInfo) bool
type ApprovalInfo ¶
type ApprovalInfo struct { AccountInfo Value int `json:"value"` Date TimeStamp `json:"date"` }
type Auth ¶
type Auth interface {
// contains filtered or unexported methods
}
Auth is a Gerrit authentication mode. The most common ones are NoAuth or BasicAuth.
func GitCookieFileAuth ¶
GitCookieFileAuth derives the Gerrit authentication token from the provided gitcookies file. It is equivalent to GitCookiesAuth, except that "git config http.cookiefile" is not used to find which cookie file to use.
func GitCookiesAuth ¶
func GitCookiesAuth() Auth
GitCookiesAuth derives the Gerrit authentication token from gitcookies based on the URL of the Gerrit request. The cookie file used is determined by running "git config http.cookiefile" in the current directory. To use a specific file, see GitCookieFileAuth.
type BranchInfo ¶
type BranchInfo struct { Ref string `json:"ref"` Revision string `json:"revision"` CanDelete bool `json:"can_delete"` }
BranchInfo is information about a branch. See https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#branch-info
type ChangeInfo ¶
type ChangeInfo struct { // ID is the ID of the change in the format // "'<project>~<branch>~<Change-Id>'", where 'project', // 'branch' and 'Change-Id' are URL encoded. For 'branch' the // refs/heads/ prefix is omitted. ID string `json:"id"` ChangeNumber int `json:"_number"` Project string `json:"project"` // Branch is the name of the target branch. // The refs/heads/ prefix is omitted. Branch string `json:"branch"` ChangeID string `json:"change_id"` Subject string `json:"subject"` // Status is the status of the change (NEW, SUBMITTED, MERGED, // ABANDONED, DRAFT). Status string `json:"status"` Created TimeStamp `json:"created"` Updated TimeStamp `json:"updated"` Mergable bool `json:"mergable"` // CurrentRevision is the commit ID of the current patch set // of this change. This is only set if the current revision // is requested or if all revisions are requested (fields // "CURRENT_REVISION" or "ALL_REVISIONS"). CurrentRevision string `json:"current_revision"` // Revisions maps a commit ID of the patch set to a // RevisionInfo entity. // // Only set if the current revision is requested (in which // case it will only contain a key for the current revision) // or if all revisions are requested. Revisions map[string]RevisionInfo `json:"revisions"` // Owner is the author of the change. // The details are only filled in if field "DETAILED_ACCOUNTS" is requested. Owner *AccountInfo `json:"owner"` // Messages are included if field "MESSAGES" is requested. Messages []ChangeMessageInfo `json:"messages"` Labels map[string]LabelInfo `json:"labels"` // MoreChanges is set on the last change from QueryChanges if // the result set is truncated by an 'n' parameter. MoreChanges bool `json:"_more_changes"` }
ChangeInfo is a Gerrit data structure. See https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-info
type ChangeMessageInfo ¶
type ChangeMessageInfo struct { ID string `json:"id"` Author *AccountInfo `json:"author"` Time TimeStamp `json:"date"` Message string `json:"message"` RevisionNumber int `json:"_revision_number"` }
type Client ¶
type Client struct { // HTTPClient optionally specifies an HTTP client to use // instead of http.DefaultClient. HTTPClient *http.Client // contains filtered or unexported fields }
Client is a Gerrit client.
func NewClient ¶
NewClient returns a new Gerrit client with the given URL prefix and authentication mode. The url should be just the scheme and hostname. If auth is nil, a default is used, or requests are made unauthenticated.
func (*Client) AbandonChange ¶
AbandonChange abandons the given change.
func (*Client) CreateProject ¶
func (c *Client) CreateProject(name string, p ...ProjectInput) (ProjectInfo, error)
CreateProject creates a new project.
func (*Client) GetAccountInfo ¶
func (c *Client) GetAccountInfo(accountID string) (AccountInfo, error)
GetAccountInfo gets the specified account's information from Gerrit. For the API call, see https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-account The accountID is https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#account-id
Note that getting "self" is a good way to validate host access, since it only requires peeker access to the host, not to any particular repository.
func (*Client) GetChangeDetail ¶
func (c *Client) GetChangeDetail(changeID string) (*ChangeInfo, error)
GetChangeDetail retrieves a change with labels, detailed labels, detailed accounts, and messages. For the API call, see https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#get-change-detail
func (*Client) GetProjectBranches ¶
func (c *Client) GetProjectBranches(name string) (map[string]BranchInfo, error)
GetProjectBranches returns a project's branches.
func (*Client) GetProjectInfo ¶
func (c *Client) GetProjectInfo(name string) (ProjectInfo, error)
GetProjectInfo returns info about a project. If the project doesn't exist, the error will be ErrProjectNotExist.
func (*Client) QueryChanges ¶
func (c *Client) QueryChanges(q string, opts ...QueryChangesOpt) ([]*ChangeInfo, error)
QueryChanges queries changes. The q parameter is a Gerrit search query. For the API call, see https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-changes For the query syntax, see https://gerrit-review.googlesource.com/Documentation/user-search.html#_search_operators
func (*Client) SetReview ¶
func (c *Client) SetReview(changeID, revision string, review ReviewInput) error
SetReview leaves a message on a change and/or modifies labels. For the API call, see https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#set-review The changeID is https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-id The revision is https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#revision-id
type CommitInfo ¶
type CommitInfo struct { Author GitPersonInfo `json:"author"` Committer GitPersonInfo `json:"committer"` CommitID string `json:"commit"` Subject string `json:"subject"` Message string `json:"message"` Parents []CommitInfo `json:"parents"` }
type GitPersonInfo ¶
type HTTPError ¶
type HTTPError struct { Res *http.Response Body []byte // 4KB prefix BodyErr error // any error reading Body }
HTTPError is the error type returned when a Gerrit API call does not return the expected status.
type LabelInfo ¶
type LabelInfo struct { // Optional means the label may be set, but it’s neither // necessary for submission nor does it block submission if // set. Optional bool `json:"optional"` All []ApprovalInfo `json:"all"` }
The LabelInfo entity contains information about a label on a change, always corresponding to the current patch set.
There are two options that control the contents of LabelInfo: LABELS and DETAILED_LABELS.
For a quick summary of the state of labels, use LABELS.
For detailed information about labels, including exact numeric votes for all users and the allowed range of votes for the current user, use DETAILED_LABELS.
type ProjectInfo ¶
type ProjectInfo struct { ID string `json:"id"` Name string `json:"name"` Parent string `json:"parent"` Description string `json:"description"` State string `json:"state"` Branches map[string]string `json:"branches"` }
ProjectInfo is information about a Gerrit project. See https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#project-info
type ProjectInput ¶
type ProjectInput struct { Parent string `json:"parent,omitempty"` Description string `json:"description,omitempty"` SubmitType string `json:"submit_type,omitempty"` CreateNewChangeForAllNotInTarget string `json:"create_new_change_for_all_not_in_target,omitempty"` }
ProjectInput contains the options for creating a new project. See https://gerrit-review.googlesource.com/Documentation/rest-api-projects.html#project-input
type QueryChangesOpt ¶
type QueryChangesOpt struct { // N is the number of results to return. // If 0, the 'n' parameter is not sent to Gerrit. N int // Fields are optional fields to also return. // Example strings include "ALL_REVISIONS", "LABELS", "MESSAGES". // For a complete list, see: // https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-info Fields []string }
QueryChangesOpt are options for QueryChanges.
type ReviewInput ¶
type RevisionInfo ¶
type RevisionInfo struct { Draft bool `json:"draft"` PatchSetNumber int `json:"_number"` Created TimeStamp `json:"created"` Uploader *AccountInfo `json:"uploader"` Ref string `json:"ref"` Fetch map[string]*FetchInfo `json:"fetch"` Commit *CommitInfo `json:"commit"` Files map[string]*FileInfo `json:"files"` }
The RevisionInfo entity contains information about a patch set. Not all fields are returned by default. Additional fields can be obtained by adding o parameters as described at: https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-changes