git

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 3, 2023 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package git provides a client to plugins that can do git operations.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client can clone repos. It keeps a local cache, so successive clones of the same repo should be quick. Create with NewClient. Be sure to clean it up.

func NewClient

func NewClient() (*Client, error)

NewClient returns a client that talks to GitHub. It will fail if git is not in the PATH.

func NewClientWithHost

func NewClientWithHost(host string) (*Client, error)

NewClientWithHost creates a client with specified host.

func (*Client) Clean

func (c *Client) Clean() error

Clean removes the local repo cache. The Client is unusable after calling.

func (*Client) Clone

func (c *Client) Clone(organization, repository string) (*Repo, error)

Clone clones a repository. Pass the full repository name, such as "kubernetes/test-infra" as the repo. This function may take a long time if it is the first time cloning the repo. In that case, it must do a full git mirror clone. For large repos, this can take a while. Once that is done, it will do a git fetch instead of a clone, which will usually take at most a few seconds.

func (*Client) SetCredentials

func (c *Client) SetCredentials(user string, tokenGenerator GitTokenGenerator)

SetCredentials sets credentials in the client to be used for pushing to or pulling from remote repositories.

func (*Client) SetRemote

func (c *Client) SetRemote(remote string)

SetRemote sets the remote for the client. This is not thread-safe, and is useful for testing. The client will clone from remote/org/repo, and Repo objects spun out of the client will also hit that path. TODO: c.host field needs to be updated accordingly.

type GitTokenGenerator

type GitTokenGenerator func(org string) (string, error)

type Repo

type Repo struct {
	// contains filtered or unexported fields
}

Repo is a clone of a git repository. Create with Client.Clone, and don't forget to clean it up after.

func (*Repo) Am

func (r *Repo) Am(path string) error

Am tries to apply the patch in the given path into the current branch by performing a three-way merge (similar to git cherry-pick). It returns an error if the patch cannot be applied.

func (*Repo) BranchExists

func (r *Repo) BranchExists(branch string) bool

BranchExists returns true if branch exists in heads.

func (*Repo) Checkout

func (r *Repo) Checkout(commitlike string) error

Checkout runs git checkout.

func (*Repo) CheckoutNewBranch

func (r *Repo) CheckoutNewBranch(branch string) error

CheckoutNewBranch creates a new branch and checks it out.

func (*Repo) CheckoutPullRequest

func (r *Repo) CheckoutPullRequest(number int) error

CheckoutPullRequest does exactly that.

func (*Repo) Clean

func (r *Repo) Clean() error

Clean deletes the repo. It is unusable after calling.

func (*Repo) Config

func (r *Repo) Config(args ...string) error

Config runs git config.

func (*Repo) Diff

func (r *Repo) Diff(head, sha string) (changes []string, err error)

Diff runs 'git diff HEAD <sha> --name-only' and returns a list of file names with upcoming changes

func (*Repo) Directory

func (r *Repo) Directory() string

Directory exposes the location of the git repo

func (*Repo) Fetch

func (r *Repo) Fetch(arg ...string) error

Fetch fetches from remote

func (*Repo) IsDirty

func (r *Repo) IsDirty() (bool, error)

IsDirty checks whether the repo is dirty or not

func (*Repo) Merge

func (r *Repo) Merge(commitlike string) (bool, error)

Merge attempts to merge commitlike into the current branch. It returns true if the merge completes. It returns an error if the abort fails.

func (*Repo) MergeAndCheckout

func (r *Repo) MergeAndCheckout(baseSHA string, mergeStrategy types.PullRequestMergeType, headSHAs ...string) error

MergeAndCheckout merges the provided headSHAs in order onto baseSHA using the provided strategy. If no headSHAs are provided, it will only checkout the baseSHA and return. Only the `merge` and `squash` strategies are supported.

func (*Repo) MergeCommitsExistBetween

func (r *Repo) MergeCommitsExistBetween(target, head string) (bool, error)

MergeCommitsExistBetween runs 'git log <target>..<head> --merged' to verify if merge commits exist between "target" and "head".

func (*Repo) MergeWithStrategy

func (r *Repo) MergeWithStrategy(commitlike string, mergeStrategy types.PullRequestMergeType) (bool, error)

MergeWithStrategy attempts to merge commitlike into the current branch given the merge strategy. It returns true if the merge completes. It returns an error if the abort fails.

func (*Repo) Push

func (r *Repo) Push(branch string, force bool) error

Push pushes over https to the provided owner/repo#branch using a password for basic auth.

func (*Repo) PushToNamedFork

func (r *Repo) PushToNamedFork(forkName, branch string, force bool) error

func (*Repo) ResetHard

func (r *Repo) ResetHard(commitlike string) error

ResetHard runs `git reset --hard`

func (*Repo) RevParse

func (r *Repo) RevParse(commitlike string) (string, error)

RevParse runs git rev-parse.

func (*Repo) SetGit

func (r *Repo) SetGit(git string)

SetGit sets git: Do not use except in unit tests

func (*Repo) SetLogger

func (r *Repo) SetLogger(logger *logrus.Entry)

SetLogger sets logger: Do not use except in unit tests

func (*Repo) ShowRef

func (r *Repo) ShowRef(commitlike string) (string, error)

ShowRef returns the commit for a commitlike. Unlike rev-parse it does not require a checkout.

Directories

Path Synopsis
Package localgit creates a local git repo that can be used for testing code that uses a git.Client.
Package localgit creates a local git repo that can be used for testing code that uses a git.Client.
Package types stores types used by all git clients
Package types stores types used by all git clients

Jump to

Keyboard shortcuts

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