Documentation ¶
Index ¶
- Constants
- Variables
- func FindClosesPullRequestComments(cis []*CommitInfo) map[int64]string
- func ShortSha(sha string) string
- type BranchAndCommit
- type CheckoutBranch
- type CherryPick
- type CherryPickResume
- type Commit
- type CommitInfo
- type CommitInfoOpts
- type Diff
- type DiffOpts
- type ErrCherryPickConflict
- type GetRefs
- type GetRefsItem
- type GitStatus
- type ListRefs
- type LogOpts
- type Origin
- type Output
- type RebaseOpts
- type RebaseResult
- type RebaseStatus
- type RefInfo
- type Repo
- func (r *Repo) AvDir() string
- func (r *Repo) AvTmpDir() string
- func (r *Repo) BranchDelete(names ...string) error
- func (r *Repo) BranchSetConfig(name, key, value string) error
- func (r *Repo) BranchesContainCommittish(committish string) ([]BranchAndCommit, error)
- func (r *Repo) CheckoutBranch(opts *CheckoutBranch) (string, error)
- func (r *Repo) CherryPick(opts CherryPick) error
- func (r *Repo) CommitInfo(opts CommitInfoOpts) (*CommitInfo, error)
- func (r *Repo) CurrentBranchName() (string, error)
- func (r *Repo) DefaultBranch() (string, error)
- func (r *Repo) Detach() error
- func (r *Repo) Diff(d *DiffOpts) (*Diff, error)
- func (r *Repo) Dir() string
- func (r *Repo) DoesBranchExist(branch string) (bool, error)
- func (r *Repo) DoesRefExist(ref string) (bool, error)
- func (r *Repo) DoesRemoteBranchExist(branch string) (bool, error)
- func (r *Repo) GetRefs(opts *GetRefs) ([]*GetRefsItem, error)
- func (r *Repo) GetRemoteName() string
- func (r *Repo) Git(args ...string) (string, error)
- func (r *Repo) GitDir() string
- func (r *Repo) GoGitRepo() *git.Repository
- func (r *Repo) IsCurrentBranchTrunk() (bool, error)
- func (r *Repo) IsTrunkBranch(name string) (bool, error)
- func (r *Repo) ListRefs(showRef *ListRefs) ([]RefInfo, error)
- func (r *Repo) Log(opts LogOpts) ([]*CommitInfo, error)
- func (r *Repo) LsRemote(remote string) (map[string]string, error)
- func (r *Repo) MergeBase(committishes ...string) (string, error)
- func (r *Repo) Origin() (*Origin, error)
- func (r *Repo) ReadStateFile(kind StateFileKind, msg any) error
- func (r *Repo) Rebase(opts RebaseOpts) (*Output, error)
- func (r *Repo) RebaseParse(opts RebaseOpts) (*RebaseResult, error)
- func (r *Repo) RevList(opts RevListOpts) ([]string, error)
- func (r *Repo) RevParse(rp *RevParse) (string, error)
- func (r *Repo) Run(opts *RunOpts) (*Output, error)
- func (r *Repo) Status() (GitStatus, error)
- func (r *Repo) TrunkBranches() ([]string, error)
- func (r *Repo) UpdateRef(update *UpdateRef) error
- func (r *Repo) WriteStateFile(kind StateFileKind, msg any) error
- type RevListOpts
- type RevParse
- type RunOpts
- type StateFileKind
- type UpdateRef
- type UpstreamStatus
Constants ¶
const ( TypeCommit = "commit" TypeTree = "tree" TypeBlob = "blob" TypeTag = "tag" )
The various types of objects in git.
const DEFAULT_REMOTE_NAME = "origin"
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 ¶
var ErrRemoteNotFound = errors.Sentinel("this repository doesn't have a remote origin")
Functions ¶
func FindClosesPullRequestComments ¶ added in v0.0.30
func FindClosesPullRequestComments(cis []*CommitInfo) map[int64]string
FindClosesPullRequestComments finds the "closes #123" instructions from the commit messages. This returns a PR number to commit hash mapping.
Types ¶
type BranchAndCommit ¶ added in v0.0.40
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 // Specifies the ref that new branch will have HEAD at // Requires the "-b" flag to be specified NewHeadRef string }
type CherryPick ¶ added in v0.0.16
type CherryPick struct { // Commits is a list of commits to apply. Commits []string // NoCommit specifies whether or not to cherry-pick without committing // (equivalent to the --no-commit flag on `git cherry-pick`). NoCommit bool // FastForward specifies whether or not to fast-forward the current branch // if possible (equivalent to the --ff flag on `git cherry-pick`). // If true, and the parent of the commit is the current HEAD, the HEAD // will be fast forwarded to the commit (instead of re-applied). FastForward bool // Resume specifies how to resume a cherry-pick operation that was // interrupted by a conflict (equivalent to the --continue, --skip, --quit, // and --abort flags on `git cherry-pick`). // Mutually exclusive with all other options. Resume CherryPickResume }
type CherryPickResume ¶ added in v0.0.16
type CherryPickResume string
const ( CherryPickContinue CherryPickResume = "continue" CherryPickSkip CherryPickResume = "skip" CherryPickQuit CherryPickResume = "quit" CherryPickAbort CherryPickResume = "abort" )
type Commit ¶ added in v0.0.17
func ParseCommitContents ¶ added in v0.0.17
func (*Commit) MessageTitle ¶ added in v0.0.17
type CommitInfo ¶
func (CommitInfo) BodyWithPrefix ¶ added in v0.0.13
func (c CommitInfo) BodyWithPrefix(prefix string) []string
type CommitInfoOpts ¶
type CommitInfoOpts struct {
Rev string
}
type DiffOpts ¶
type DiffOpts struct { // The revisions to compare. // The behavior of the diff changes depending on how these are specified. // - If empty, the generated diff is relative to the current staging area. // - If one commit is given, the diff is calculated between the working tree // and the given commit. // - If two commits are given (or one string representing a commit range // like `<a>..<b>`), the diff is calculated between the two commits. Specifiers []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 // If true, shows the colored diff. Color bool // If specified, compare only the specified paths. Paths []string }
type ErrCherryPickConflict ¶ added in v0.0.16
func (ErrCherryPickConflict) Error ¶ added in v0.0.16
func (e ErrCherryPickConflict) Error() string
type GetRefsItem ¶
type GitStatus ¶ added in v0.0.40
type GitStatus struct { // OID is the object ID of the commit. // // This can be an empty string. If it is empty, it means that the repository is just created // and there's no commit at all. OID string // CurrentBranch is the name of the current branch, without 'refs/heads/'. // // This can be an empty string. If it is empty, it means that the repository is at the // detached state. CurrentBranch string // UnstagedTrackedFiles is the list of the paths of the unstaged tracked files. UnstagedTrackedFiles []string // StageTrackedFiles is the list of the paths of the staged tracked files. StagedTrackedFiles []string // UnmergedFiles is the list of the paths of the unmerged files. UnmergedFiles []string // UntrackedFiles is the list of the paths of the untracked files. UntrackedFiles []string }
GitStatus is the status of the git repository.
This uses the same format as the `git status --porcelain=v2` command. See https://git-scm.com/docs/git-status#_porcelain_format_version_2 for the details.
func (GitStatus) IsCleanIgnoringUntracked ¶ added in v0.0.40
type LogOpts ¶ added in v0.0.30
type LogOpts struct { // RevisionRange is the range of the commits specified by the format described in // git-log(1). RevisionRange []string }
type RebaseOpts ¶ added in v0.0.4
type RebaseOpts struct { // Required (unless Continue is true) // The upstream branch to rebase onto. Upstream string // Optional (mutually exclusive with all other options) // If set, continue a rebase (all other options are ignored). Continue bool // Optional (mutually exclusive with all other options) Abort bool // Optional (mutually exclusive with all other options) Skip bool // Optional // If set, use `git rebase --onto <upstream> ...` Onto string // Optional // If set, this is the branch that will be rebased; otherwise, the current // branch is rebased. Branch string }
type RebaseResult ¶ added in v0.0.8
type RebaseResult struct { Status RebaseStatus Hint string // The "headline" of the error message (if any) ErrorHeadline string }
type RebaseStatus ¶ added in v0.0.8
type RebaseStatus int
const ( RebaseAlreadyUpToDate RebaseStatus = iota RebaseUpdated RebaseStatus = iota RebaseConflict RebaseStatus = iota RebaseNotInProgress RebaseStatus = iota // RebaseAborted indicates that an in-progress rebase was aborted. // Only returned if Rebase was called with Abort: true. RebaseAborted RebaseStatus = iota )
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 (*Repo) BranchDelete ¶ added in v0.0.15
BranchDelete deletes the given branches (equivalent to `git branch -D`).
func (*Repo) BranchSetConfig ¶ added in v0.0.32
BranchSetConfig sets a config on the given branch (equivalent to `git config branch.<branch>.<key> <value>`).
func (*Repo) BranchesContainCommittish ¶ added in v0.0.43
func (r *Repo) BranchesContainCommittish(committish string) ([]BranchAndCommit, 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) CherryPick ¶ added in v0.0.16
func (r *Repo) CherryPick(opts CherryPick) error
CherryPick applies the given commits on top of the current HEAD. If there are conflicts, ErrCherryPickConflict is returned.
func (*Repo) CommitInfo ¶
func (r *Repo) CommitInfo(opts CommitInfoOpts) (*CommitInfo, error)
func (*Repo) CurrentBranchName ¶
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 (*Repo) DoesBranchExist ¶ added in v0.0.18
func (*Repo) DoesRemoteBranchExist ¶ added in v0.0.15
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) GetRemoteName ¶ added in v0.0.40
func (*Repo) IsCurrentBranchTrunk ¶ added in v0.0.40
func (*Repo) IsTrunkBranch ¶ added in v0.0.36
func (*Repo) ListRefs ¶
ListRefs lists all refs in the repository (optionally matching a specific pattern).
func (*Repo) Log ¶ added in v0.0.30
func (r *Repo) Log(opts LogOpts) ([]*CommitInfo, error)
Log returns a list of commits specified by the range.
func (*Repo) ReadStateFile ¶ added in v0.0.36
func (r *Repo) ReadStateFile(kind StateFileKind, msg any) error
func (*Repo) RebaseParse ¶ added in v0.0.8
func (r *Repo) RebaseParse(opts RebaseOpts) (*RebaseResult, error)
RebaseParse runs a `git rebase` and parses the output into a RebaseResult.
func (*Repo) RevList ¶ added in v0.0.5
func (r *Repo) RevList(opts RevListOpts) ([]string, error)
RevList list commits that are reachable from the given commits (excluding commits reachable from the given exclusions).
func (*Repo) TrunkBranches ¶ added in v0.0.36
func (*Repo) WriteStateFile ¶ added in v0.0.36
func (r *Repo) WriteStateFile(kind StateFileKind, msg any) error
type RevListOpts ¶ added in v0.0.5
type RevListOpts struct { // A list of commit roots, or exclusions if the commit sha starts with a // caret (^). As a special case, "foo..bar" is equivalent to "foo ^bar" // which means every commit reachable from foo but not from bar. // For example, to list all of the commits introduced in a pull request, // the specifier would be "HEAD..master". // See `git rev-list --help`. Specifiers []string // If true, display the commits in chronological order. Reverse bool }
type RunOpts ¶
type RunOpts struct { Args []string Env []string // If true, return a non-nil error if the command exited with a non-zero // exit code. ExitError bool // If true, the standard I/Os are connected to the console, allowing the git command to // interact with the user. Stdout and Stderr will be empty. Interactive bool // The standard input to the command (if any). Mutually exclusive with Interactive. Stdin io.Reader }
type StateFileKind ¶ added in v0.0.36
type StateFileKind string
const ( StateFileKindSync StateFileKind = "stack-sync.state.json" StateFileKindReorder StateFileKind = "stack-reorder.state.json" StateFileKindRestack StateFileKind = "stack-restack.state.json" StateFileKindSyncV2 StateFileKind = "stack-sync-v2.state.json" )
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 // Create a reflog for this ref change. CreateReflog bool }
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.