Documentation ¶
Overview ¶
Package git manages a cache of git commit info that's stored in the database.
Index ¶
- Variables
- type Git
- type Impl
- func (g *Impl) CommitFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (provider.Commit, error)
- func (g *Impl) CommitNumberFromGitHash(ctx context.Context, githash string) (types.CommitNumber, error)
- func (g *Impl) CommitNumberFromTime(ctx context.Context, t time.Time) (types.CommitNumber, error)
- func (g *Impl) CommitNumbersWhenFileChangesInCommitNumberRange(ctx context.Context, begin, end types.CommitNumber, filename string) ([]types.CommitNumber, error)
- func (g *Impl) CommitSliceFromCommitNumberRange(ctx context.Context, begin, end types.CommitNumber) ([]provider.Commit, error)
- func (g *Impl) CommitSliceFromCommitNumberSlice(ctx context.Context, commitNumberSlice []types.CommitNumber) ([]provider.Commit, error)
- func (g *Impl) CommitSliceFromTimeRange(ctx context.Context, begin, end time.Time) ([]provider.Commit, error)
- func (g *Impl) GetCommitNumber(ctx context.Context, githash string, commitNumber types.CommitNumber) (types.CommitNumber, error)
- func (g *Impl) GitHashFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (string, error)
- func (g *Impl) LogEntry(ctx context.Context, commit types.CommitNumber) (string, error)
- func (g *Impl) PreviousCommitNumberFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (types.CommitNumber, error)
- func (g *Impl) PreviousGitHashFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (string, error)
- func (g *Impl) RepoSuppliedCommitNumber() bool
- func (g *Impl) StartBackgroundPolling(ctx context.Context, duration time.Duration)
- func (g *Impl) Update(ctx context.Context) error
Constants ¶
This section is empty.
Variables ¶
var ( // BadCommit is returned on errors from functions that return Commits. BadCommit = provider.Commit{ CommitNumber: types.BadCommitNumber, } )
Functions ¶
This section is empty.
Types ¶
type Git ¶
type Git interface { // StartBackgroundPolling starts a background process that periodically adds // new commits to the database. StartBackgroundPolling(ctx context.Context, duration time.Duration) // Update finds all the new commits added to the repo since our last Update. Update(ctx context.Context) error // GetCommitNumber looks up the commit number from Commits table given a git hash or commit number GetCommitNumber(ctx context.Context, githash string, commitNumber types.CommitNumber) (types.CommitNumber, error) // CommitNumberFromGitHash looks up the commit number given the git hash. CommitNumberFromGitHash(ctx context.Context, githash string) (types.CommitNumber, error) // CommitFromCommitNumber returns all the stored details for a given CommitNumber. CommitFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (provider.Commit, error) // CommitSliceFromCommitNumberSlice returns all the stored details for a given slice of CommitNumbers. CommitSliceFromCommitNumberSlice(ctx context.Context, commitNumberSlice []types.CommitNumber) ([]provider.Commit, error) // CommitNumberFromTime finds the index of the closest commit with a commit time // less than or equal to 't'. // // Pass in zero time, i.e. time.Time{} to indicate to just get the most recent // commit. CommitNumberFromTime(ctx context.Context, t time.Time) (types.CommitNumber, error) // CommitSliceFromTimeRange returns a slice of Commits that fall in the range // [begin, end), i.e inclusive of begin and exclusive of end. CommitSliceFromTimeRange(ctx context.Context, begin, end time.Time) ([]provider.Commit, error) // CommitSliceFromCommitNumberRange returns a slice of Commits that fall in the range // [begin, end], i.e inclusive of both begin and end. CommitSliceFromCommitNumberRange(ctx context.Context, begin, end types.CommitNumber) ([]provider.Commit, error) // GitHashFromCommitNumber returns the git hash of the given commit number. GitHashFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (string, error) // PreviousGitHashFromCommitNumber returns the previous git hash of the given commit number. PreviousGitHashFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (string, error) // PreviousCommitNumberFromCommitNumber returns the previous commit number of the given commit number. PreviousCommitNumberFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (types.CommitNumber, error) // CommitNumbersWhenFileChangesInCommitNumberRange returns a slice of commit // numbers when the given file has changed between [begin, end], i.e. the given // range is exclusive of the begin commit and inclusive of the end commit. CommitNumbersWhenFileChangesInCommitNumberRange(ctx context.Context, begin, end types.CommitNumber, filename string) ([]types.CommitNumber, error) // LogEntry returns the full log entry of a commit (minus the diff) as a string. LogEntry(ctx context.Context, commit types.CommitNumber) (string, error) // RepoSuppliedCommitNumber returns true if the CommitNumber is actually // specified by information in the git commit messages. RepoSuppliedCommitNumber() bool }
Git is the interface for the minimal functionality Perf needs to interface to a git repo.
type Impl ¶
type Impl struct {
// contains filtered or unexported fields
}
Impl implements Git, the minimal functionality Perf needs to interface to a git repo.
It stores a copy of the needed commit info in an SQL database for quicker access, and runs a background Go routine that updates the database periodically.
Please see perf/sql/migrations for the database schema used.
func New ¶
func New(ctx context.Context, local bool, db pool.Pool, instanceConfig *config.InstanceConfig) (*Impl, error)
New creates a new *Git from the given instance configuration.
The instance created does not poll by default, callers need to call StartBackgroundPolling().
func (*Impl) CommitFromCommitNumber ¶
func (g *Impl) CommitFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (provider.Commit, error)
CommitFromCommitNumber implements Git.
func (*Impl) CommitNumberFromGitHash ¶
func (g *Impl) CommitNumberFromGitHash(ctx context.Context, githash string) (types.CommitNumber, error)
CommitNumberFromGitHash implements Git.
func (*Impl) CommitNumberFromTime ¶
CommitNumberFromTime implements Git.
func (*Impl) CommitNumbersWhenFileChangesInCommitNumberRange ¶
func (g *Impl) CommitNumbersWhenFileChangesInCommitNumberRange(ctx context.Context, begin, end types.CommitNumber, filename string) ([]types.CommitNumber, error)
CommitNumbersWhenFileChangesInCommitNumberRange implements Git.
func (*Impl) CommitSliceFromCommitNumberRange ¶
func (g *Impl) CommitSliceFromCommitNumberRange(ctx context.Context, begin, end types.CommitNumber) ([]provider.Commit, error)
CommitSliceFromCommitNumberRange implements Git.
func (*Impl) CommitSliceFromCommitNumberSlice ¶
func (g *Impl) CommitSliceFromCommitNumberSlice(ctx context.Context, commitNumberSlice []types.CommitNumber) ([]provider.Commit, error)
CommitSliceFromCommitNumberSlice implements Git.
func (*Impl) CommitSliceFromTimeRange ¶
func (g *Impl) CommitSliceFromTimeRange(ctx context.Context, begin, end time.Time) ([]provider.Commit, error)
CommitSliceFromTimeRange implements Git.
func (*Impl) GetCommitNumber ¶
func (g *Impl) GetCommitNumber(ctx context.Context, githash string, commitNumber types.CommitNumber) (types.CommitNumber, error)
GetCommitNumber implements Git.
func (*Impl) GitHashFromCommitNumber ¶
func (g *Impl) GitHashFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (string, error)
GitHashFromCommitNumber implements Git.
func (*Impl) PreviousCommitNumberFromCommitNumber ¶
func (g *Impl) PreviousCommitNumberFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (types.CommitNumber, error)
PreviousCommitNumberFromCommitNumber implements Git.
func (*Impl) PreviousGitHashFromCommitNumber ¶
func (g *Impl) PreviousGitHashFromCommitNumber(ctx context.Context, commitNumber types.CommitNumber) (string, error)
PreviousGitHashFromCommitNumber implements Git.
func (*Impl) RepoSuppliedCommitNumber ¶
RepoSuppliedCommitNumber implements Git.
func (*Impl) StartBackgroundPolling ¶
StartBackgroundPolling implements Git.
Directories ¶
Path | Synopsis |
---|---|
Package gittest has utilities for testing perf/go/git.
|
Package gittest has utilities for testing perf/go/git. |
Package provider contains types and interfaces for interacting with Git repos.
|
Package provider contains types and interfaces for interacting with Git repos. |
Package providers builds different kinds of provider.Provider.
|
Package providers builds different kinds of provider.Provider. |
git_checkout
Package git_checkout implements provider.Provider by shelling out to run git commands.
|
Package git_checkout implements provider.Provider by shelling out to run git commands. |
gitiles
Package gitiles imlements provider.Provider using the Gitiles API.
|
Package gitiles imlements provider.Provider using the Gitiles API. |