git

package
v0.0.1-beta3 Latest Latest
Warning

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

Go to latest
Published: May 25, 2022 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TypeCommit = "commit"
	TypeTree   = "tree"
	TypeBlob   = "blob"
	TypeTag    = "tag"
)

The various types of objects in git.

View Source
const Missing = "0000000000000000000000000000000000000000"

Missing is a sentinel zero-value for object id (aka sha). Git treats this value as "this thing doesn't exist". For example, when updating a ref, if the old value is specified as EmptyOid, Git will refuse to update the ref if already exists.

Variables

This section is empty.

Functions

func ShortSha

func ShortSha(sha string) string

Types

type CheckoutBranch

type CheckoutBranch struct {
	// The name of the branch to checkout.
	Name string
	// Specifies the "-b" flag to git.
	// The checkout will fail if the branch already exists.
	NewBranch bool
}

type Diff

type Diff struct {
	// If true, there are no differences between the working tree and the commit.
	Empty    bool
	Contents string
}

type DiffOpts

type DiffOpts struct {
	// If specified, generate the diff between the working tree and this commit.
	// If empty (default), generates the diff between the working tree and the
	// current index (i.e., the diff containing all unstaged changes).
	Commit string
	// If true, don't actually generate the diff, just return whether or not its
	// empty. If set, Diff.Contents will always be an empty string.
	Quiet bool
}

type GetRefs

type GetRefs struct {
	// The revisions to retrieve.
	Revisions []string
}

type GetRefsItem

type GetRefsItem struct {
	// The revision that was requested (exactly as given in GetRefs.Revisions)
	Revision string
	// The git object ID that the revision resolved to
	Oid string
	// The type of the git object
	Type string
	// The contents of the git object
	Contents []byte
}

type ListRefs

type ListRefs struct {
	Patterns []string
}

type MergeBase

type MergeBase struct {
	Revs []string
}

type Origin

type Origin struct {
	URL *url.URL
	// The URL slug that corresponds to repository.
	// For example, github.com/my-org/my-repo becomes my-org/my-repo.
	RepoSlug string
}

type Output

type Output struct {
	ExitCode int
	Stdout   []byte
	Stderr   []byte
}

type RefInfo

type RefInfo struct {
	Name string
	Type string
	Oid  string
	// The name of the upstream ref (e.g., refs/remotes/<remote>/<branch>)
	Upstream string
	// The status of the ref relative to the upstream.
	UpstreamStatus UpstreamStatus
}

type Repo

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

func OpenRepo

func OpenRepo(repoDir string) (*Repo, error)

func (*Repo) CheckoutBranch

func (r *Repo) CheckoutBranch(opts *CheckoutBranch) (string, error)

CheckoutBranch performs a checkout of the given branch and returns the name of the previous branch, if any (this can be used to restore the previous branch if necessary). The returned previous branch name may be empty if the repo is currently not checked out to a branch (i.e., in detached HEAD state).

func (*Repo) CurrentBranchName

func (r *Repo) CurrentBranchName() (string, error)

CurrentBranchName returns the name of the current branch. The name is return in "short" format -- i.e., without the "refs/heads/" prefix. IMPORTANT: This function will return an error if the repository is currently in a detached-head state (e.g., during a rebase conflict).

func (*Repo) DefaultBranch

func (r *Repo) DefaultBranch() (string, error)

func (*Repo) Diff

func (r *Repo) Diff(d *DiffOpts) (*Diff, error)

func (*Repo) Dir

func (r *Repo) Dir() string

func (*Repo) GetRefs

func (r *Repo) GetRefs(opts *GetRefs) ([]*GetRefsItem, error)

GetRefs reads the contents of the specified objects from the repository. This corresponds to the `git cat-file --batch` command.

func (*Repo) Git

func (r *Repo) Git(args ...string) (string, error)

func (*Repo) GitDir

func (r *Repo) GitDir() string

func (*Repo) GitStdin

func (r *Repo) GitStdin(args []string, stdin io.Reader) (string, error)

func (*Repo) ListRefs

func (r *Repo) ListRefs(showRef *ListRefs) ([]RefInfo, error)

ListRefs lists all refs in the repository (optionally matching a specific pattern).

func (*Repo) MergeBase

func (r *Repo) MergeBase(mb *MergeBase) (string, error)

func (*Repo) Origin

func (r *Repo) Origin() (*Origin, error)

func (*Repo) RevParse

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

func (*Repo) Run

func (r *Repo) Run(opts *RunOpts) (*Output, error)

func (*Repo) UpdateRef

func (r *Repo) UpdateRef(update *UpdateRef) error

UpdateRef updates the specified ref within the Git repository.

type RevParse

type RevParse struct {
	// The name of the branch to parse.
	// If empty, the current branch is parsed.
	Rev              string
	SymbolicFullName bool
}

type RunOpts

type RunOpts struct {
	Args []string
	Env  []string
}

type UpdateRef

type UpdateRef struct {
	// The name of the ref (e.g., refs/heads/my-branch).
	Ref string
	// The Git object ID to set the ref to.
	New string
	// Only update the ref if the current value (before the update) is equal to
	// this object ID. Use Missing to only create the ref if it didn't
	// already exists (e.g., to avoid overwriting a branch).
	Old string
}

type UpstreamStatus

type UpstreamStatus string

UpstreamStatus is the status of a git ref (usually a branch) relative to its upstream.

const (
	Ahead     UpstreamStatus = ">"
	Behind    UpstreamStatus = "<"
	Divergent UpstreamStatus = "<>"
	InSync    UpstreamStatus = "="
)

The possible upstream statuses. These match what is returned by Git's `%(upstream:trackshort)` format directive.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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