Documentation
¶
Index ¶
- Constants
- Variables
- func AddStackBaseBranch(title string, branch string) error
- func AddStackRefDir(dir string) (string, error)
- func AddStackRefFile(title string, stackRef StackRef) error
- func AddUpstreamRemote(upstreamURL, cloneDir string) error
- func CheckoutBranch(branch string, gr GitRunner) error
- func CheckoutNewBranch(branch string) error
- func CommitBody(sha string) (string, error)
- func Config(name string) (string, error)
- func CreateBranches(t *testing.T, branches []string)
- func CreateRefFiles(refs map[string]StackRef, title string) error
- func CurrentBranch() (string, error)
- func DeleteLocalBranch(branch string, gr GitRunner) error
- func DeleteStackRefFile(title string, stackRef StackRef) error
- func DescribeByTags() (string, error)
- func GetAllConfig(key string) ([]byte, error)
- func GetCurrentStackTitle() (title string, err error)
- func GetDefaultBranch(remote string) (string, error)
- func GetRemoteURL(remoteAlias string) (string, error)
- func GitUserName() ([]byte, error)
- func HasLocalBranch(branch string) bool
- func InitGitRepo(t *testing.T) string
- func InitGitRepoWithCommit(t *testing.T) string
- func IsValidURL(u string) bool
- func ListTags() ([]string, error)
- func MrMockStackData(branch, iid string) string
- func ParseDefaultBranch(output []byte) (string, error)
- func ParseURL(rawURL string) (u *url.URL, err error)
- func Push(remote string, ref string, cmdOut, cmdErr io.Writer) error
- func RemoteBranchExists(branch string, gr GitRunner) bool
- func RunClone(cloneURL string, target string, args []string) (cloneDir string, err error)
- func RunCmd(args []string) (err error)
- func SetConfig(key, value string) error
- func SetLocalConfig(key, value string) error
- func SetRemoteConfig(remote, key, value string) error
- func SetUpstream(remote string, branch string, cmdOut, cmdErr io.Writer) error
- func SetupMocks(mocks []HttpMock) *httpmock.Mocker
- func StackRootDir(title string) (string, error)
- func UncommittedChangeCount() (int, error)
- func UpdateStackRefFile(title string, s StackRef) error
- type BranchConfig
- type Commit
- type GitRunner
- type HttpMock
- func MockGetStackMR(branch, iid string) HttpMock
- func MockListOpenStackMRsByBranch(branch, iid string) HttpMock
- func MockListStackMRsByBranch(branch, iid string) HttpMock
- func MockPostStackMR(source, target, project string) HttpMock
- func MockPutStackMR(target, iid, project string) HttpMock
- func MockStackUser() HttpMock
- type Ref
- type Remote
- type RemoteSet
- type SSHAliasMap
- type Stack
- func (s *Stack) BaseBranch(gr GitRunner) (branch string, err error)
- func (s *Stack) Branches() (branches []string)
- func (s Stack) Empty() bool
- func (s *Stack) First() StackRef
- func (s *Stack) IndexAt(ref StackRef) int
- func (s *Stack) Iter() iter.Seq[StackRef]
- func (s *Stack) Iter2() iter.Seq2[int, StackRef]
- func (s *Stack) Last() StackRef
- func (s Stack) RefFromBranch(branch string) (StackRef, error)
- func (s *Stack) RemoveBranch(ref StackRef, gr GitRunner) error
- func (s *Stack) RemoveRef(ref StackRef, gr GitRunner) error
- type StackRef
- type StandardGitCommand
- type TrackingRef
Constants ¶
const BaseBranchFile = "BASE_BRANCH"
const DefaultRemote = "origin"
Variables ¶
var ErrNotOnAnyBranch = errors.New("you're not on any Git branch (a 'detached HEAD' state).")
ErrNotOnAnyBranch indicates that the user is in detached HEAD state
var SetRemoteResolution = func(name, resolution string) error { return SetRemoteConfig(name, "glab-resolved", resolution) }
var StackLocation = filepath.Join(".git", "stacked")
var ToplevelDir = func() (string, error) { showCmd := exec.Command("git", "rev-parse", "--show-toplevel") output, err := run.PrepareCmd(showCmd).Output() return firstLine(output), err }
ToplevelDir returns the top-level directory path of the current repository
Functions ¶
func AddStackBaseBranch ¶ added in v1.54.0
func AddStackRefDir ¶ added in v1.42.0
func AddStackRefFile ¶ added in v1.42.0
func AddUpstreamRemote ¶
func CheckoutBranch ¶
func CheckoutNewBranch ¶ added in v1.42.0
func CommitBody ¶
func CreateBranches ¶ added in v1.51.0
func CreateRefFiles ¶ added in v1.51.0
func CurrentBranch ¶
CurrentBranch reads the checked-out branch for the git repository
func DeleteLocalBranch ¶
func DeleteStackRefFile ¶ added in v1.42.0
func DescribeByTags ¶ added in v1.30.0
DescribeByTags gives a description of the current object. Non-annotated tags are considered. Reference: https://git-scm.com/docs/git-describe
func GetAllConfig ¶ added in v1.32.0
GetConfig returns the local config value associated with the provided key. If there are multiple values associated with the key, they are all returned.
func GetCurrentStackTitle ¶ added in v1.42.0
func GetDefaultBranch ¶
GetDefaultBranch finds and returns the remote's default branch
func GetRemoteURL ¶
func GitUserName ¶ added in v1.42.0
func HasLocalBranch ¶
func InitGitRepo ¶ added in v1.41.0
func InitGitRepoWithCommit ¶ added in v1.41.0
func IsValidURL ¶
IsValidUrl tests a string to determine if it is a valid Git url or not.
func MrMockStackData ¶ added in v1.51.0
func ParseDefaultBranch ¶ added in v1.50.0
func RemoteBranchExists ¶ added in v1.54.0
func SetLocalConfig ¶ added in v1.42.0
func SetRemoteConfig ¶ added in v1.32.0
func SetUpstream ¶
SetUpstream sets the upstream (tracking) of a branch
func SetupMocks ¶ added in v1.51.0
func StackRootDir ¶ added in v1.42.0
func UncommittedChangeCount ¶
func UpdateStackRefFile ¶ added in v1.42.0
Types ¶
type BranchConfig ¶
func ReadBranchConfig ¶
func ReadBranchConfig(branch string) (cfg BranchConfig)
ReadBranchConfig parses the `branch.BRANCH.(remote|merge)` part of git config
type Commit ¶
func LatestCommit ¶
type HttpMock ¶ added in v1.51.0
type HttpMock struct {
// contains filtered or unexported fields
}
func MockGetStackMR ¶ added in v1.51.0
func MockListOpenStackMRsByBranch ¶ added in v1.51.0
func MockListStackMRsByBranch ¶ added in v1.51.0
func MockPostStackMR ¶ added in v1.51.0
func MockPutStackMR ¶ added in v1.51.0
func MockStackUser ¶ added in v1.51.0
func MockStackUser() HttpMock
type Remote ¶
Remote is a parsed git remote
type SSHAliasMap ¶
SSHAliasMap encapsulates the translation of SSH hostname aliases
func ParseSSHConfig ¶
func ParseSSHConfig() SSHAliasMap
ParseSSHConfig constructs a map of SSH hostname aliases based on user and system configuration files
func (SSHAliasMap) Translator ¶
func (m SSHAliasMap) Translator() func(*url.URL) *url.URL
Translator returns a function that applies hostname aliases to URLs
type Stack ¶ added in v1.42.0
Stack represents a stacked diff data structure. Refs are structured as a doubly linked list where the links are identified with the StackRef.Prev and StackRef.Next fields. The StackRef.SHA is the id that the former two fields can point to. All stacks must be created with GatherStackRefs which validates the stack for consistency.
func GatherStackRefs ¶ added in v1.42.0
func (*Stack) BaseBranch ¶ added in v1.54.0
func (*Stack) Iter ¶ added in v1.47.0
Iter returns an iterator to range from the first to the last ref in the stack.
func (Stack) RefFromBranch ¶ added in v1.51.0
func (*Stack) RemoveBranch ¶ added in v1.42.0
type StackRef ¶ added in v1.42.0
type StackRef struct { Prev string `json:"prev"` Branch string `json:"branch"` SHA string `json:"sha"` Next string `json:"next"` MR string `json:"mr"` Description string `json:"description"` }
func CurrentStackRefFromCurrentBranch ¶ added in v1.51.0
func (StackRef) Empty ¶ added in v1.47.0
Empty returns true if the stack ref does not have an associated SHA (commit). This indicates that the StackRef is invalid.
func (StackRef) IsFirst ¶ added in v1.47.0
IsFirst returns true if the stack ref is the first of the stack. A stack ref is considered the first if it does not reference any previous ref.
type StandardGitCommand ¶ added in v1.42.0
type StandardGitCommand struct{}
type TrackingRef ¶
TrackingRef represents a ref for a remote tracking branch
func (TrackingRef) String ¶
func (r TrackingRef) String() string