luci: go.chromium.org/luci/milo/git Index | Files | Directories

package git

import "go.chromium.org/luci/milo/git"

Package git provides high level API for Git/Gerrit data.

Features:

It enforces read ACLs on Git/Gerrit hosts/projects configured in
  settings.cfg in source_acls blocks.
Transparently caches results respecting ACLs above.
  That's why no caching of returned data should be done by callers.

Limitations:

currently, only works with *.googlesource.com hosted Git/Gerrit
repositories, but could be extended to work with other providers.

Index

Package Files

client.go combined_logs.go generate.go gerrit.go log.go

func Use Uses

func Use(c context.Context, s Client) context.Context

Use returns context with provided Client implementation.

Useful in tests, see also gittest.MockClient

func UseACLs Uses

func UseACLs(c context.Context, acls *gitacls.ACLs) context.Context

UseACLs returns context with production implementation installed.

type Client Uses

type Client interface {

    // Log returns ancestors commits of the given repository host
    // (e.g. "chromium.googlesource.com"), project (e.g. "chromium/src")
    // and descendant committish (e.g. "refs/heads/master" or commit hash).
    //
    // Limit specifies the maximum number of commits to return.
    // If limit<=0, 50 is used.
    // Setting a lower value increases cache hit probability.
    //
    // May return gRPC errors returned by the underlying Gitiles service.
    Log(c context.Context, host, project, commitish string, inputOptions *LogOptions) ([]*gitpb.Commit, error)

    // CombinedLogs returns latest commits reachable from several refs.
    //
    // Returns a slice of up to a limit (defaults to 50 when <= 0) commits that:
    //  * for each source ref, subsequence of returned slice formed by
    //    its corresponding commits will be in the same order,
    //  * across refs, commits will be ordered by timestamp, and
    //  * identical commits from multiple commits will be deduped.
    //
    // For example, for two refs with commits (C_5 means C was committed at time
    // 5) and limit 5, the function will first resolve each ref to sequence of
    // commits:
    //
    //    ref1: A_1 -> B_5 -> C_9
    //    ref2: X_2 -> Y_7 -> Z_4    (note timestamp inversion)
    //
    // and then return combined list of [C_9, B_5, Z_4, Y_7, X_2].
    //
    // refs must be a list of ref specs as described in the proto config (see
    // doc for refs field in the Console message in api/config/project.proto)
    //
    // exlcudeRef can be set to non-emtpy value to exclude commits from a specific
    // ref, e.g. this is useful when requsting commits from branches that branch
    // off a single main branch, commits from which should not be returned even
    // though they are present in the history of each requested branch
    CombinedLogs(c context.Context, host, project, excludeRef string,
        refs []string, limit int) (commits []*gitpb.Commit, err error)

    // CLEmail fetches the CL owner email.
    //
    // Returns empty string if either:
    //   CL doesn't exist, or
    //   current user has no access to CL's project.
    //
    // May return gRPC errors returned by the underlying Gerrit service.
    CLEmail(c context.Context, host string, changeNumber int64) (string, error)
}

Client provides high level API for Git/Gerrit data.

Methods may return grpc errors returned by the underlying Gitiles service. These errors will be annotated with Milo's error tags whenever reasonable.

func Get Uses

func Get(c context.Context) Client

Get returns Client set in supplied context.

panics if not set.

type LogOptions Uses

type LogOptions struct {
    Limit     int
    WithFiles bool
}

LogOptions are options for Log function.

Directories

PathSynopsis
gitaclsPackage gitacls implements read ACLs for Git/Gerrit data.
gittestPackage gittest is a generated GoMock package.

Package git imports 28 packages (graph) and is imported by 10 packages. Updated 2018-12-17. Refresh now. Tools for package owners.