Documentation ¶
Index ¶
- Constants
- Variables
- func ParseURL(remote string) (*url.URL, error)
- func SplitGitFragment(fragment string) (ref string, subdir string)
- type GitCLI
- type GitRef
- type Option
- func WithArgs(args ...string) Option
- func WithDir(dir string) Option
- func WithExec(exec func(context.Context, *exec.Cmd) error) Option
- func WithGitBinary(path string) Option
- func WithGitDir(gitDir string) Option
- func WithSSHAuthSock(sshAuthSock string) Option
- func WithSSHKnownHosts(sshKnownHosts string) Option
- func WithStreams(streams StreamFunc) Option
- func WithWorkTree(workTree string) Option
- type StreamFunc
Constants ¶
const ( HTTPProtocol string = "http" HTTPSProtocol string = "https" SSHProtocol string = "ssh" GitProtocol string = "git" )
Variables ¶
var ( ErrUnknownProtocol = errors.New("unknown protocol") ErrInvalidProtocol = errors.New("invalid protocol") )
Functions ¶
func ParseURL ¶
ParseURL parses a git URL and returns a parsed URL object.
ParseURL understands implicit ssh URLs such as "git@host:repo", and returns the same response as if the URL were "ssh://git@host/repo".
func SplitGitFragment ¶
SplitGitFragments splits a git URL fragment into its respective git reference and subdirectory components.
Types ¶
type GitCLI ¶
type GitCLI struct {
// contains filtered or unexported fields
}
GitCLI carries config to pass to the git cli to make running multiple commands less repetitive.
func (*GitCLI) New ¶
New returns a new git client with the same config as the current one, but with the given options applied on top.
type GitRef ¶
type GitRef struct { // Remote is the remote repository path. Remote string // ShortName is the directory name of the repo. // e.g., "bar" for "https://github.com/foo/bar.git" ShortName string // Commit is a commit hash, a tag, or branch name. // Commit is optional. Commit string // SubDir is a directory path inside the repo. // SubDir is optional. SubDir string // IndistinguishableFromLocal is true for a ref that is indistinguishable from a local file path, // e.g., "github.com/foo/bar". // // Deprecated. // Instead, use a distinguishable form such as "https://github.com/foo/bar.git". // // The dockerfile frontend still accepts this form only for build contexts. IndistinguishableFromLocal bool // UnencryptedTCP is true for a ref that needs an unencrypted TCP connection, // e.g., "git://..." and "http://..." . // // Discouraged, although not deprecated. // Instead, consider using an encrypted TCP connection such as "git@github.com/foo/bar.git" or "https://github.com/foo/bar.git". UnencryptedTCP bool }
GitRef represents a git ref.
Examples:
- "https://github.com/foo/bar.git#baz/qux:quux/quuz" is parsed into: {Remote: "https://github.com/foo/bar.git", ShortName: "bar", Commit:"baz/qux", SubDir: "quux/quuz"}.
type Option ¶
type Option func(b *GitCLI)
Option provides a variadic option for configuring the git client.
func WithDir ¶
WithDir sets working directory.
This should be a path to any directory within a standard git repository.
func WithGitDir ¶
WithGitDir sets the --git-dir arg.
This should be the path to the .git directory. When setting this, you may also need to set WithWorkTree, unless you are working with a bare repository.
func WithSSHAuthSock ¶
WithSSHAuthSock sets the ssh auth sock.
func WithSSHKnownHosts ¶
WithSSHKnownHosts sets the known hosts file.
func WithStreams ¶
func WithStreams(streams StreamFunc) Option
WithStreams configures a callback for getting the streams for a command. The stream callback will be called once for each command, and both writers will be closed after the command has finished.
func WithWorkTree ¶
WithWorkTree sets the --work-tree arg.
This should be the path to the top-level directory of the checkout. When setting this, you also likely need to set WithGitDir.
type StreamFunc ¶
type StreamFunc func(context.Context) (io.WriteCloser, io.WriteCloser, func())