Documentation
¶
Index ¶
- Variables
- func CheckDirectoryIsValidGitCheckout(ctx context.Context, runner command.Runner, envContainer app.EnvContainer, ...) error
- func CheckForUncommittedGitChanges(ctx context.Context, runner command.Runner, envContainer app.EnvContainer, ...) ([]string, error)
- func GetCurrentHEADGitCommit(ctx context.Context, runner command.Runner, envContainer app.EnvContainer, ...) (string, error)
- func GetRefsForGitCommitAndRemote(ctx context.Context, runner command.Runner, envContainer app.EnvContainer, ...) ([]string, error)
- type CloneToBucketOptions
- type Cloner
- type ClonerOptions
- type ListFilesAndUnstagedFilesOptions
- type Lister
- type Name
- type Remote
Constants ¶
This section is empty.
Variables ¶
var ( // ErrRemoteNotFound is returned from GetRemote when the specified remote name is not // found in the current git checkout. ErrRemoteNotFound = errors.New("git remote not found") // ErrInvalidGitCheckout is returned from CheckDirectoryIsValidGitCheckout when the // specified directory is not a valid git checkout. ErrInvalidGitCheckout = errors.New("invalid git checkout") )
Functions ¶
func CheckDirectoryIsValidGitCheckout ¶ added in v1.32.0
func CheckDirectoryIsValidGitCheckout( ctx context.Context, runner command.Runner, envContainer app.EnvContainer, dir string, ) error
CheckDirectoryIsValidGitCheckout runs a simple git rev-parse. In the case where the directory is not a valid git checkout (e.g. the directory is not a git repository or the directory does not exist), this will return a 128. We handle that and return an ErrInvalidGitCheckout to the user.
func CheckForUncommittedGitChanges ¶ added in v1.32.0
func CheckForUncommittedGitChanges( ctx context.Context, runner command.Runner, envContainer app.EnvContainer, dir string, ) ([]string, error)
CheckForUncommittedGitChanges checks if there are any uncommitted and/or unchecked changes from git based on the given directory.
func GetCurrentHEADGitCommit ¶ added in v1.32.0
func GetCurrentHEADGitCommit( ctx context.Context, runner command.Runner, envContainer app.EnvContainer, dir string, ) (string, error)
GetCurrentHEADGitCommit returns the current HEAD commit based on the given directory.
func GetRefsForGitCommitAndRemote ¶ added in v1.32.0
func GetRefsForGitCommitAndRemote( ctx context.Context, runner command.Runner, envContainer app.EnvContainer, dir string, remote string, gitCommitSha string, ) ([]string, error)
GetRefsForGitCommitAndRemote returns all refs pointing to a given commit based on the given remote for the given directory. Querying the remote for refs information requires passing the environment for permissions.
Types ¶
type CloneToBucketOptions ¶
CloneToBucketOptions are options for Clone.
type Cloner ¶
type Cloner interface {
// CloneToBucket clones the repository to the bucket.
//
// The url must contain the scheme, including file:// if necessary.
// depth must be > 0.
CloneToBucket(
ctx context.Context,
envContainer app.EnvContainer,
url string,
depth uint32,
writeBucket storage.WriteBucket,
options CloneToBucketOptions,
) error
}
Cloner clones git repositories to buckets.
type ClonerOptions ¶
type ClonerOptions struct {
HTTPSUsernameEnvKey string
HTTPSPasswordEnvKey string
SSHKeyFileEnvKey string
SSHKnownHostsFilesEnvKey string
}
ClonerOptions are options for a new Cloner.
type ListFilesAndUnstagedFilesOptions ¶ added in v1.14.0
type ListFilesAndUnstagedFilesOptions struct {
// IgnorePathRegexps are regexes of paths to ignore.
//
// These must be unnormalized in the manner of the local OS that the Lister
// is being applied to.
IgnorePathRegexps []*regexp.Regexp
}
ListFilesAndUnstagedFilesOptions are options for ListFilesAndUnstagedFiles.
type Lister ¶ added in v1.14.0
type Lister interface {
// ListFilesAndUnstagedFiles lists all files checked into git except those that
// were deleted, and also lists unstaged files.
//
// This does not list unstaged deleted files
// This does not list unignored files that were not added.
// This ignores regular files.
//
// This is used for situations like license headers where we want all the
// potential git files during development.
//
// The returned paths will be unnormalized.
//
// This is the equivalent of doing:
//
// comm -23 \
// <(git ls-files --cached --modified --others --no-empty-directory --exclude-standard | sort -u | grep -v -e IGNORE_PATH1 -e IGNORE_PATH2) \
// <(git ls-files --deleted | sort -u)
ListFilesAndUnstagedFiles(
ctx context.Context,
envContainer app.EnvStdioContainer,
options ListFilesAndUnstagedFilesOptions,
) ([]string, error)
}
Lister lists files in git repositories.
type Name ¶
type Name interface {
// contains filtered or unexported methods
}
Name is a name identifiable by git.
func NewBranchName ¶
NewBranchName returns a new Name for the branch.
func NewRefNameWithBranch ¶
NewRefNameWithBranch returns a new Name for the ref while setting branch as the clone target.
type Remote ¶ added in v1.32.0
type Remote interface {
// Name of the remote (e.g. "origin")
Name() string
// HEADBranch is the name of the HEAD branch of the remote.
HEADBranch() string
// Hostname is the host name parsed from the remote URL. If the remote is an unknown
// kind, then this may be an empty string.
Hostname() string
// RepositoryPath is the path to the repository based on the remote URL. If the remote
// is an unknown kind, then this may be an empty string.
RepositoryPath() string
// SourceControlURL makes the best effort to construct a user-facing source control url
// given a commit sha string based on the remote source, and available hostname and
// repository path information.
//
// If the remote hostname contains bitbucket (e.g. bitbucket.mycompany.com or bitbucket.org),
// we construct the source control URL as:
//
// https://<hostname>/<repository-path>/commits/<git-commit-sha>
//
// If the remote hostname contains github (e.g. github.mycompany.com or github.com), we
// construct the source control URL as:
// https://<hostname>/repository-path>/commit/git-commit-sha>
//
// If the remote hostname contains gitlab (e.g. gitlab.mycompany.com or gitlab.com), we
// construct the source control URL as:
// https://<hostname>/repository-path>/commit/git-commit-sha>
//
// If the remote is unknown and/or no hostname/repository path information is available,
// this will return an empty string.
//
// This does not do any validation against the gitCommitSha provided.
SourceControlURL(gitCommitSha string) string
// contains filtered or unexported methods
}
Remote represents a Git remote and provides associated metadata.
func GetRemote ¶ added in v1.32.0
func GetRemote( ctx context.Context, runner command.Runner, envContainer app.EnvContainer, dir string, name string, ) (Remote, error)
GetRemote gets the Git remote based on the given remote name. In order to query the remote information, we need to pass in the env with appropriate permissions.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
git-ls-files-unstaged
command
Package main implements a file lister for git that lists unstaged files.
|
Package main implements a file lister for git that lists unstaged files. |