Documentation
¶
Index ¶
Constants ¶
const ( DefaultRemote = "origin" DefaultBranch = "master" DefaultPublicKeyAuthUser = "git" )
Variables ¶
var ( ErrNoGitRepository = errors.New("no git repository") ErrNoStagedFiles = errors.New("no staged files") )
var HostKeyAlgos []string
HostKeyAlgos holds the HostKey algorithms that the SSH client will advertise to the server. If empty, Go's default is used instead.
var KexAlgos []string
KexAlgos hosts the key exchange algorithms to be used for SSH connections. If empty, Go's default is used instead.
Functions ¶
func IsConcreteCommit ¶ added in v0.5.0
IsConcreteCommit returns if a given commit is a concrete commit. Concrete commits have most of commit metadata and commit content. In contrast, a partial commit may only have some metadata and no commit content.
Types ¶
type AuthOptions ¶ added in v0.5.0
type AuthOptions struct {
Transport TransportType
Host string
Username string
Password string
Identity []byte
KnownHosts []byte
CAFile []byte
}
AuthOptions are the authentication options for the Transport of communication with a remote origin.
func NewAuthOptions ¶ added in v0.5.0
NewAuthOptions constructs an AuthOptions object from the given map. If the map is empty, it returns a minimal AuthOptions object after validating the result.
func (AuthOptions) Validate ¶ added in v0.5.0
func (o AuthOptions) Validate() error
Validate the AuthOptions against the defined Transport.
type CheckoutOptions ¶ added in v0.5.0
type CheckoutOptions struct {
// Branch to checkout, can be combined with Branch with some
// Implementations.
Branch string
// Tag to checkout, takes precedence over Branch.
Tag string
// SemVer tag expression to checkout, takes precedence over Tag.
SemVer string `json:"semver,omitempty"`
// Commit SHA1 to checkout, takes precedence over Tag and SemVer,
// can be combined with Branch with some Implementations.
Commit string
// RecurseSubmodules defines if submodules should be checked out,
// not supported by all Implementations.
RecurseSubmodules bool
// LastRevision holds the revision observed on the last successful
// reconciliation.
// It is used to skip clone operations when no changes were detected.
LastRevision string
// ShallowClone defines if the repository should be shallow cloned,
// not supported by all implementations
ShallowClone bool
}
CheckoutOptions are the options used for a Git checkout.
type Commit ¶ added in v0.5.0
type Commit struct {
// Hash is the SHA1 hash of the commit.
Hash Hash
// Reference is the original reference of the commit, for example:
// 'refs/tags/foo'.
Reference string
// Author is the original author of the commit.
Author Signature
// Committer is the one performing the commit, might be different from
// Author.
Committer Signature
// Signature is the PGP signature of the commit.
Signature string
// Encoded is the encoded commit, without any signature.
Encoded []byte
// Message is the commit message, contains arbitrary text.
Message string
}
Commit contains all possible information about a Git commit.
func (*Commit) ShortMessage ¶ added in v0.5.0
ShortMessage returns the first 50 characters of a commit subject.
type DiscardRepositoryCloser ¶ added in v0.5.0
type DiscardRepositoryCloser struct{}
DiscardRepositoryCloser is a RepositoryCloser which discards calls to Close().
func (*DiscardRepositoryCloser) Close ¶ added in v0.5.0
func (c *DiscardRepositoryCloser) Close()
type ErrRepositoryNotFound ¶ added in v0.5.0
ErrRepositoryNotFound indicates that the repository (or the ref in question) does not exist at the given URL.
func (ErrRepositoryNotFound) Error ¶ added in v0.5.0
func (e ErrRepositoryNotFound) Error() string
type RepositoryClient ¶ added in v0.5.0
type RepositoryClient interface {
RepositoryReader
RepositoryWriter
}
RepositoryClient knows how to perform local and remote operations on a Git repository.
type RepositoryCloser ¶ added in v0.5.0
type RepositoryCloser interface {
// Close closes any resources that need to be closed at the end of
// a Git repository client's lifecycle.
Close()
}
RepositoryCloser knows how to perform any operations that need to happen at the end of the lifecycle of a RepositoryWriter/RepositoryReader. When this is not required by the implementation, it can simply embed an anonymous pointer to DiscardRepositoryCloser.
type RepositoryReader ¶ added in v0.5.0
type RepositoryReader interface {
// Clone clones a repository from the provided url using the options provided.
Clone(ctx context.Context, url string, checkoutOpts CheckoutOptions) (*Commit, error)
// IsClean returns whether the working tree is clean.
IsClean() (bool, error)
// Head returns the hash of the current HEAD of the repo.
Head() (string, error)
// Path returns the path of the repository.
Path() string
RepositoryCloser
}
RepositoryReader knows how to perform local and remote read operations on a Git repository.
type RepositoryWriter ¶ added in v0.5.0
type RepositoryWriter interface {
// Init initializes a repository at the configured path with the remote
// origin set to url on the provided branch.
Init(ctx context.Context, url, branch string) error
// Push pushes the current branch of the repository to origin.
Push(ctx context.Context) error
// SwitchBranch switches from the current branch of the repository to the
// provided branch. If the branch doesn't exist, it is created.
SwitchBranch(ctx context.Context, branch string) error
// WriteFile creates a new file at the given path, reads from the reader and
// writes the content to the file. If the file already exists, its overwritten.
WriteFile(path string, reader io.Reader) error
// Commit commits any changes made to the repository.
// signer is an optional argument which can be provided to sign the commit using
// OpenPGP.
Commit(info Commit, signer *openpgp.Entity) (string, error)
RepositoryCloser
}
RepositoryWriter knows how to perform local and remote write operations on a Git repository.
type Signature ¶ added in v0.5.0
Signature represents an entity which associates a person and a time with a commit.
type TransportType ¶ added in v0.5.0
type TransportType string
const ( SSH TransportType = "ssh" HTTPS TransportType = "https" HTTP TransportType = "http" )