Documentation
¶
Index ¶
- func BranchExists(remote, name string) (bool, error)
- func CommitAndPush(filePath, message string) error
- func CommitAndPushWithRetry(filePath, message string, opts ...Option) error
- func CurrentBranch() (string, error)
- func DeleteRemoteBranch(remote, name string) error
- func DeleteRemoteTag(remote, name string) error
- func GetChangedFiles(baseSHA, headSHA string) ([]string, error)
- func GetInitialCommit() (string, error)
- func GetLatestReleaseTag(dir, prefix string) (string, string, error)
- func GetLatestTag(dir, prefix string) (string, string, error)
- func IsAncestor(ancestor, descendant string) (bool, error)
- func IsValidVersionTag(tag string) bool
- func ListRemoteBranches(remote string) ([]string, error)
- func ListTags() ([]string, error)
- func PushWithRebaseRetry(opts ...Option) error
- func RemoteBranchSHA(remote, name string) (string, error)
- type Commit
- type Option
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BranchExists ¶ added in v0.2.0
BranchExists reports whether the remote-tracking ref refs/remotes/<remote>/<name> exists by running "git rev-parse --verify". An exit code of 0 means the ref exists, a non-zero exit code means it does not, and an execution failure is returned as an error.
This checks remote-tracking refs, so the remote must have been fetched first. A shallow or partial fetch that omits the branch will cause this to report false.
func CommitAndPush ¶
CommitAndPush stages a file, commits with the given message, and pushes to origin.
func CommitAndPushWithRetry ¶ added in v0.2.0
CommitAndPushWithRetry stages filePath, commits it with message, and pushes to the current branch's upstream, retrying the push up to three times behind a pull --rebase. A "nothing to commit" state is treated as success (no-op). This is the manifest state-write path shared by promote and hotfix finalize: an API-created commit on real GitHub goes through a different path, so this is the plain-git fallback used when committing locally.
Optional behaviour is supplied through Options: WithDir runs the commands in a specific repository, and WithBackoff tunes the retry delay. With no options the call behaves identically to the original positional signature.
func CurrentBranch ¶ added in v0.2.0
CurrentBranch returns the name of the currently checked-out branch. It returns an error if the HEAD is detached or the command fails.
func DeleteRemoteBranch ¶ added in v0.2.0
DeleteRemoteBranch deletes the named branch on the given remote by running "git push <remote> --delete <name>". Deleting a branch that does not exist on the remote is treated as success so the operation is idempotent: re-running a rejoin cleanup after a partial failure does not error on an already-deleted branch.
func DeleteRemoteTag ¶ added in v0.2.0
DeleteRemoteTag deletes the named tag on the given remote by running "git push <remote> --delete refs/tags/<name>". Deleting a tag that does not exist on the remote is treated as success so the operation is idempotent.
func GetChangedFiles ¶
GetChangedFiles returns the list of files changed between two commits
func GetInitialCommit ¶
GetInitialCommit returns the SHA of the first commit in the repository
func GetLatestReleaseTag ¶
GetLatestReleaseTag returns the most recent non-prerelease tag (no -rc suffix). This is used to find the base version for calculating next release versions. Tag lookups run against dir so the caller's repository is read even when the process working directory points elsewhere; an empty dir falls back to the process working directory.
func GetLatestTag ¶
GetLatestTag returns the most recent tag matching the given prefix, sorted by semver. Tag lookups run against dir so the caller's repository is read even when the process working directory points elsewhere; an empty dir falls back to the process working directory. Returns empty string if no matching tags found.
func IsAncestor ¶ added in v0.2.0
IsAncestor reports whether ancestor is an ancestor of descendant by running "git merge-base --is-ancestor". An exit code of 0 means true, an exit code of 1 means false, and any other exit code or execution failure is returned as an error.
Both commits must be present in the local object store. In a shallow clone the relevant history may be missing, so callers that rely on this must ensure full history is fetched (for example fetch-depth: 0).
func IsValidVersionTag ¶ added in v0.6.0
IsValidVersionTag reports whether tag is a well-formed cascade version tag. Tags that do not match (for example a vX.Y.Z-dryrun.N exercise tag, a foreign "nightly" or "latest" tag, or a typo) are invisible to version discovery so they can never be mistaken for the latest released or prereleased version.
func ListRemoteBranches ¶ added in v0.2.0
ListRemoteBranches returns the branch names known for the given remote via the remote-tracking refs refs/remotes/<remote>/*. The remote prefix and the symbolic HEAD pointer are stripped, so "refs/remotes/origin/env/test" is returned as "env/test". The remote must have been fetched first; a shallow or partial fetch that omits branches will leave them out of the result.
func ListTags ¶ added in v0.2.0
ListTags returns every tag in the repository. It returns an empty slice when the repository has no tags.
func PushWithRebaseRetry ¶ added in v0.9.0
PushWithRebaseRetry pushes the current branch to its upstream, retrying up to three times behind a "git pull --rebase" when the push is rejected (for example a non-fast-forward caused by a concurrent state writer landing on trunk between checkout and push). It is the push half of CommitAndPushWithRetry, exposed for callers that stage and commit through their own flow and only need the shared rebase-retry behaviour. On a rebase conflict it aborts the rebase and returns the wrapped error rather than leaving the repository mid-rebase.
func RemoteBranchSHA ¶ added in v0.2.0
RemoteBranchSHA returns the SHA of the remote-tracking ref refs/remotes/<remote>/<name> by running "git rev-parse". The returned SHA is whitespace-trimmed. An error is returned if the ref cannot be resolved.
This resolves a remote-tracking ref, so the remote must have been fetched first. A shallow or partial fetch that omits the branch will cause this to fail.
Types ¶
type Commit ¶
type Commit struct {
Hash string
Subject string
Body string
Author string
AuthorEmail string // Author email for deduplication
GitHubUsername string // GitHub username (looked up via API)
}
Commit represents a git commit
type Option ¶ added in v0.9.0
type Option func(*pushOptions)
Option configures the rebase-retry push helpers. Options are additive: a call with no options behaves exactly as the original positional API did.
func WithBackoff ¶ added in v0.9.0
WithBackoff sets the delay between push retries. A zero duration (the default) selects defaultPushBackoff. Tests pass a tiny value to keep the retry loop fast.