git

package
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 22, 2021 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package git provides an abstraction over github.com/go-git/go-git/v5 to make it easy to mock out remote git operations in tests.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRepositoryAlreadyExists = git.ErrRepositoryAlreadyExists
	ErrRepositoryNotExists     = git.ErrRepositoryNotExists
	NoErrAlreadyUpToDate       = git.NoErrAlreadyUpToDate
)

Errors are aliased from go-git to avoid importing it just for error checks.

Functions

This section is empty.

Types

type Client

type Client interface {
	// Clone a repository at url into localPath. The clone is performed
	// non-bare, so the repository will have a worktree. If the local path is
	// not empty ErrRepositoryAlreadyExists is returned.
	Clone(ctx context.Context, url, localPath string) (Repository, error)

	// Open opens a repository from the given path. It detects if the
	// repository is bare or a normal one. If the path doesn't contain a valid
	// repository ErrRepositoryNotExists is returned.
	Open(path string) (Repository, error)

	// Init creates an empty non-bare git repository at the given path.
	// Non-bare means that the repository will have worktree. If the path is
	// not empty ErrRepositoryAlreadyExists is returned.
	Init(path string) (Repository, error)
}

Client is the interface for a client that can perform actions on git repositories.

func NewClient

func NewClient() Client

NewClient creates a new Client which will perform real git operations on disk.

type FakeClient

type FakeClient struct {
	mock.Mock
}

FakeClient is a fake git client with can be used in tests.

func (*FakeClient) Clone

func (c *FakeClient) Clone(ctx context.Context, url, localPath string) (Repository, error)

Clone implements Client.

func (*FakeClient) Init

func (c *FakeClient) Init(path string) (Repository, error)

Init implements Client.

func (*FakeClient) Open

func (c *FakeClient) Open(path string) (Repository, error)

Open implements Client.

type FakeRepository

type FakeRepository struct {
	mock.Mock
}

FakeRepository is a fake git repository which can be used in tests.

func (*FakeRepository) Checkout

func (r *FakeRepository) Checkout(hash plumbing.Hash) error

Checkout implements Repository.

func (*FakeRepository) Fetch

func (r *FakeRepository) Fetch(ctx context.Context, refSpecs ...config.RefSpec) error

Fetch implements Repository.

func (*FakeRepository) ResolveRevision

func (r *FakeRepository) ResolveRevision(revision plumbing.Revision) (*plumbing.Hash, error)

ResolveRevision implements Repository.

type Repository

type Repository interface {
	// Fetch fetches references along with the objects necessary to complete
	// their histories, from the remote named origin.
	//
	// Returns nil if the operation is successful, NoErrAlreadyUpToDate if
	// there are no changes to be fetched, or an error.
	Fetch(ctx context.Context, refSpecs ...config.RefSpec) error

	// ResolveRevision resolves revision to corresponding hash. It will always
	// resolve to a commit hash, not a tree or annotated tag.
	ResolveRevision(revision plumbing.Revision) (*plumbing.Hash, error)

	// Checkout checks out the commit referenced by the provided hash. The
	// checkout is performed in force mode to throw away local changes.
	Checkout(hash plumbing.Hash) error
}

Repository is the interface for a git repository.

func NewRepository

func NewRepository(repo *git.Repository) Repository

NewRepository creates a new Repository from given go-git repository.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL