Documentation ¶
Overview ¶
Package gitdomain defines basic concepts from the domain of Git: branches, remotes, commit SHAs, etc.
Index ¶
- Variables
- type BranchInfo
- func (self BranchInfo) HasLocalBranch() bool
- func (self BranchInfo) HasOnlyLocalBranch() bool
- func (self BranchInfo) HasOnlyRemoteBranch() bool
- func (self BranchInfo) HasRemoteBranch() bool
- func (self BranchInfo) HasTrackingBranch() bool
- func (self BranchInfo) IsEmpty() bool
- func (self BranchInfo) IsLocal() bool
- func (self BranchInfo) IsOmniBranch() bool
- type BranchInfos
- func (self BranchInfos) FindByLocalName(branchName LocalBranchName) *BranchInfo
- func (self BranchInfos) FindByRemoteName(remoteBranch RemoteBranchName) *BranchInfo
- func (self BranchInfos) FindMatchingRecord(other BranchInfo) BranchInfo
- func (self BranchInfos) HasLocalBranch(branch LocalBranchName) bool
- func (self BranchInfos) HasLocalBranches(branches LocalBranchNames) bool
- func (self BranchInfos) HasMatchingTrackingBranchFor(localBranch LocalBranchName) bool
- func (self BranchInfos) LocalBranches() BranchInfos
- func (self BranchInfos) LocalBranchesWithDeletedTrackingBranches() BranchInfos
- func (self BranchInfos) Names() LocalBranchNames
- func (self BranchInfos) Remove(branchName LocalBranchName) BranchInfos
- func (self BranchInfos) Select(names []LocalBranchName) (BranchInfos, error)
- func (self BranchInfos) UpdateLocalSHA(branch LocalBranchName, sha SHA) error
- type BranchName
- type BranchesSnapshot
- type LocalBranchName
- func (self LocalBranchName) AtRemote(remote Remote) RemoteBranchName
- func (self LocalBranchName) BranchName() BranchName
- func (self LocalBranchName) IsEmpty() bool
- func (self LocalBranchName) Location() Location
- func (self LocalBranchName) String() string
- func (self LocalBranchName) TrackingBranch() RemoteBranchName
- type LocalBranchNames
- func (self LocalBranchNames) AppendAllMissing(others ...LocalBranchName) LocalBranchNames
- func (self LocalBranchNames) Contains(branch LocalBranchName) bool
- func (self LocalBranchNames) Hoist(needle LocalBranchName) LocalBranchNames
- func (self LocalBranchNames) Join(sep string) string
- func (self LocalBranchNames) Remove(toRemove ...LocalBranchName) LocalBranchNames
- func (self LocalBranchNames) RemoveWorkspaceMarkers() LocalBranchNames
- func (self LocalBranchNames) Sort()
- func (self LocalBranchNames) String() string
- func (self LocalBranchNames) Strings() []string
- type Location
- type Remote
- type RemoteBranchName
- func (self RemoteBranchName) BranchName() BranchName
- func (self RemoteBranchName) IsEmpty() bool
- func (self RemoteBranchName) LocalBranchName() LocalBranchName
- func (self RemoteBranchName) Parts() (Remote, LocalBranchName)
- func (self RemoteBranchName) Remote() Remote
- func (self RemoteBranchName) String() string
- type RemoteBranchNames
- type Remotes
- type RepoRootDir
- type RepoStatus
- type SHA
- type SHAs
- type StashSize
- type SyncStatus
Constants ¶
This section is empty.
Variables ¶
var ( NoRemote = NewRemote("") //nolint:gochecknoglobals OriginRemote = NewRemote("origin") //nolint:gochecknoglobals UpstreamRemote = NewRemote("upstream") //nolint:gochecknoglobals )
Functions ¶
This section is empty.
Types ¶
type BranchInfo ¶
type BranchInfo struct { // LocalName contains the local name of the branch. LocalName LocalBranchName // LocalSHA contains the SHA that this branch had locally before Git Town ran. LocalSHA SHA // RemoteName contains the fully qualified name of the tracking branch, i.e. "origin/foo". RemoteName RemoteBranchName // RemoteSHA contains the SHA of the tracking branch before Git Town ran. RemoteSHA SHA // SyncStatus of the branch SyncStatus SyncStatus }
BranchInfo describes the sync status of a branch in relation to its tracking branch.
func EmptyBranchInfo ¶
func EmptyBranchInfo() BranchInfo
func (BranchInfo) HasLocalBranch ¶
func (self BranchInfo) HasLocalBranch() bool
func (BranchInfo) HasOnlyLocalBranch ¶
func (self BranchInfo) HasOnlyLocalBranch() bool
func (BranchInfo) HasOnlyRemoteBranch ¶
func (self BranchInfo) HasOnlyRemoteBranch() bool
func (BranchInfo) HasRemoteBranch ¶
func (self BranchInfo) HasRemoteBranch() bool
func (BranchInfo) HasTrackingBranch ¶
func (self BranchInfo) HasTrackingBranch() bool
func (BranchInfo) IsEmpty ¶
func (self BranchInfo) IsEmpty() bool
IsEmpty indicates whether this BranchInfo is completely empty, i.e. not a single branch contains something.
func (BranchInfo) IsLocal ¶
func (self BranchInfo) IsLocal() bool
IsLocalBranch indicates whether this branch exists in the local repo that Git Town is running in.
func (BranchInfo) IsOmniBranch ¶
func (self BranchInfo) IsOmniBranch() bool
IsOmniBranch indicates whether the local and remote branch are in sync.
type BranchInfos ¶
type BranchInfos []BranchInfo
BranchInfos contains the BranchInfos for all branches in a repo. Tracking branches on the origin remote don't get their own entry, they are listed in the `TrackingBranch` property of the local branch they track.
func (BranchInfos) FindByLocalName ¶
func (self BranchInfos) FindByLocalName(branchName LocalBranchName) *BranchInfo
FindByLocalName provides the branch with the given name if one exists.
func (BranchInfos) FindByRemoteName ¶
func (self BranchInfos) FindByRemoteName(remoteBranch RemoteBranchName) *BranchInfo
FindByRemoteName provides the local branch that has the given remote branch as its tracking branch or nil if no such branch exists.
func (BranchInfos) FindMatchingRecord ¶
func (self BranchInfos) FindMatchingRecord(other BranchInfo) BranchInfo
func (BranchInfos) HasLocalBranch ¶
func (self BranchInfos) HasLocalBranch(branch LocalBranchName) bool
HasLocalBranch indicates whether the given local branch is already known to this BranchInfos instance.
func (BranchInfos) HasLocalBranches ¶ added in v12.1.0
func (self BranchInfos) HasLocalBranches(branches LocalBranchNames) bool
HasLocalBranches indicates whether this BranchInfos instance contains all the given branches.
func (BranchInfos) HasMatchingTrackingBranchFor ¶
func (self BranchInfos) HasMatchingTrackingBranchFor(localBranch LocalBranchName) bool
HasMatchingRemoteBranchFor indicates whether there is already a remote branch matching the given local branch.
func (BranchInfos) LocalBranches ¶
func (self BranchInfos) LocalBranches() BranchInfos
LocalBranches provides only the branches that exist on the local machine.
func (BranchInfos) LocalBranchesWithDeletedTrackingBranches ¶
func (self BranchInfos) LocalBranchesWithDeletedTrackingBranches() BranchInfos
LocalBranchesWithDeletedTrackingBranches provides only the branches that exist locally and have a deleted tracking branch.
func (BranchInfos) Names ¶
func (self BranchInfos) Names() LocalBranchNames
Names provides the names of all local branches in this BranchesSyncStatus instance.
func (BranchInfos) Remove ¶
func (self BranchInfos) Remove(branchName LocalBranchName) BranchInfos
func (BranchInfos) Select ¶
func (self BranchInfos) Select(names []LocalBranchName) (BranchInfos, error)
Select provides the BranchSyncStatus elements with the given names. TODO: make argument variadic
func (BranchInfos) UpdateLocalSHA ¶
func (self BranchInfos) UpdateLocalSHA(branch LocalBranchName, sha SHA) error
type BranchName ¶
type BranchName string
BranchName is the name of a local or remote Git branch.
func NewBranchName ¶
func NewBranchName(id string) BranchName
func (BranchName) IsLocal ¶
func (self BranchName) IsLocal() bool
IsLocal indicates whether the branch with this BranchName exists locally.
func (BranchName) LocalName ¶
func (self BranchName) LocalName() LocalBranchName
LocalName provides the local version of this branch name.
func (BranchName) RemoteName ¶
func (self BranchName) RemoteName() RemoteBranchName
RemoteName provides the remote version of this branch name.
func (BranchName) String ¶
func (self BranchName) String() string
Implementation of the fmt.Stringer interface.
type BranchesSnapshot ¶ added in v12.0.1
type BranchesSnapshot struct { // the branch that was checked out at the time the snapshot was taken Active LocalBranchName // Branches is a read-only copy of the branches that exist in this repo at the time the snapshot was taken. // Don't use these branches for business logic since businss logic might want to modify its in-memory cache of branches // as it adds or removes branches. Branches BranchInfos }
BranchesSnapshot is a snapshot of the Git branches at a particular point in time.
func EmptyBranchesSnapshot ¶
func EmptyBranchesSnapshot() BranchesSnapshot
func (BranchesSnapshot) IsEmpty ¶ added in v12.0.1
func (self BranchesSnapshot) IsEmpty() bool
type LocalBranchName ¶
type LocalBranchName string
LocalBranchName is the name of a local Git branch. The zero value is an empty local branch name, i.e. a local branch name that is unknown or not configured.
func EmptyLocalBranchName ¶
func EmptyLocalBranchName() LocalBranchName
func NewLocalBranchName ¶
func NewLocalBranchName(id string) LocalBranchName
func NewLocalBranchNameRef ¶
func NewLocalBranchNameRef(id string) *LocalBranchName
func NewLocalBranchNameRefAllowEmpty ¶
func NewLocalBranchNameRefAllowEmpty(id string) *LocalBranchName
NewLocalBranchNameRefAllowEmpty constructs a new LocalBranchName instance and provides a reference to it. It does not verify the branch name.
func (LocalBranchName) AtRemote ¶
func (self LocalBranchName) AtRemote(remote Remote) RemoteBranchName
AtRemote provides the RemoteBranchName of this branch at the given remote.
func (LocalBranchName) BranchName ¶
func (self LocalBranchName) BranchName() BranchName
BranchName widens the type of this LocalBranchName to a more generic BranchName.
func (LocalBranchName) IsEmpty ¶
func (self LocalBranchName) IsEmpty() bool
IsEmpty indicates whether this branch name is not set.
func (LocalBranchName) Location ¶
func (self LocalBranchName) Location() Location
Location widens the type of this LocalBranchName to a more generic Location.
func (LocalBranchName) String ¶
func (self LocalBranchName) String() string
Implementation of the fmt.Stringer interface.
func (LocalBranchName) TrackingBranch ¶
func (self LocalBranchName) TrackingBranch() RemoteBranchName
TrackingBranch provides the name of the tracking branch for this local branch.
type LocalBranchNames ¶
type LocalBranchNames []LocalBranchName
func NewLocalBranchNames ¶
func NewLocalBranchNames(names ...string) LocalBranchNames
func NewLocalBranchNamesRef ¶
func NewLocalBranchNamesRef(names ...string) *LocalBranchNames
func ParseLocalBranchNamesRef ¶
func ParseLocalBranchNamesRef(names string) *LocalBranchNames
ParseLocalBranchNamesRef constructs a LocalBranchNames instance containing the branches listed in the given space-separated string.
func (LocalBranchNames) AppendAllMissing ¶
func (self LocalBranchNames) AppendAllMissing(others ...LocalBranchName) LocalBranchNames
AppendAllMissing provides a LocalBranchNames list consisting of the sum of this and elements of other list that aren't in this list.
func (LocalBranchNames) Contains ¶
func (self LocalBranchNames) Contains(branch LocalBranchName) bool
Contains indicates whether this collection contains the given branch.
func (LocalBranchNames) Hoist ¶
func (self LocalBranchNames) Hoist(needle LocalBranchName) LocalBranchNames
Hoist moves the given needle to the front of the list.
func (LocalBranchNames) Join ¶
func (self LocalBranchNames) Join(sep string) string
Join provides the names of all branches in this collection connected by the given separator.
func (LocalBranchNames) Remove ¶
func (self LocalBranchNames) Remove(toRemove ...LocalBranchName) LocalBranchNames
Remove removes the given branch names from this collection.
func (LocalBranchNames) RemoveWorkspaceMarkers ¶
func (self LocalBranchNames) RemoveWorkspaceMarkers() LocalBranchNames
RemoveWorkspaceMarkers removes the workspace markers from the branch names in this list.
func (LocalBranchNames) Sort ¶
func (self LocalBranchNames) Sort()
Sort orders the branches in this collection alphabetically.
func (LocalBranchNames) String ¶
func (self LocalBranchNames) String() string
func (LocalBranchNames) Strings ¶
func (self LocalBranchNames) Strings() []string
Strings provides the names of all branches in this collection as strings.
type Location ¶
type Location string
Location is a location within a Git repo. Examples for locations are SHA addresses of commits or branch names.
func NewLocation ¶
type RemoteBranchName ¶
type RemoteBranchName string
RemoteBranchName is the name of a remote branch, e.g. "origin/foo".
func EmptyRemoteBranchName ¶
func EmptyRemoteBranchName() RemoteBranchName
func NewRemoteBranchName ¶
func NewRemoteBranchName(id string) RemoteBranchName
func (RemoteBranchName) BranchName ¶
func (self RemoteBranchName) BranchName() BranchName
BranchName widens the type of this RemoteBranchName to a more generic BranchName.
func (RemoteBranchName) IsEmpty ¶
func (self RemoteBranchName) IsEmpty() bool
func (RemoteBranchName) LocalBranchName ¶
func (self RemoteBranchName) LocalBranchName() LocalBranchName
LocalBranchName provides the name of the local branch that this remote branch tracks.
func (RemoteBranchName) Parts ¶
func (self RemoteBranchName) Parts() (Remote, LocalBranchName)
func (RemoteBranchName) Remote ¶
func (self RemoteBranchName) Remote() Remote
func (RemoteBranchName) String ¶
func (self RemoteBranchName) String() string
Implementation of the fmt.Stringer interface.
type RemoteBranchNames ¶
type RemoteBranchNames []RemoteBranchName
func (RemoteBranchNames) Sort ¶
func (self RemoteBranchNames) Sort()
Sort orders the branches in this collection alphabetically.
func (RemoteBranchNames) Strings ¶
func (self RemoteBranchNames) Strings() []string
Strings provides these remote branch names as strings.
type Remotes ¶
type Remotes []Remote
Remotes answers questions which Git remotes a repo has.
func NewRemotes ¶
func (Remotes) HasUpstream ¶
type RepoRootDir ¶
type RepoRootDir string
RepoRootDir represents the root directory of a Git repository.
func EmptyRepoRootDir ¶
func EmptyRepoRootDir() RepoRootDir
func NewRepoRootDir ¶
func NewRepoRootDir(dir string) RepoRootDir
func (RepoRootDir) IsEmpty ¶
func (self RepoRootDir) IsEmpty() bool
func (RepoRootDir) String ¶
func (self RepoRootDir) String() string
type RepoStatus ¶
type SHA ¶
type SHA string
SHA represents a Git SHA as a dedicated data type. This helps avoid stringly-typed code.
func NewSHA ¶
NewSHA creates a new SHA instance with the given value. The value is verified for correctness.
func (SHA) TruncateTo ¶
TruncateTo provides a new SHA instance that contains a shorter checksum.
type SyncStatus ¶
type SyncStatus string
SyncStatus encodes the places a branch can exist at. This is a type-safe enum, see https://npf.io/2022/05/safer-enums.
const ( SyncStatusUpToDate SyncStatus = "up to date" // the branch exists locally and remotely, the local branch is up to date SyncStatusNotInSync SyncStatus = "not in sync" // the branch exists locally and remotely, the local branch is behind the remote tracking branch SyncStatusLocalOnly SyncStatus = "local only" // the branch was created locally and hasn't been pushed to the remote yet SyncStatusRemoteOnly SyncStatus = "remote only" // the branch exists only at the remote SyncStatusDeletedAtRemote SyncStatus = "deleted at remote" // the branch was deleted on the remote SyncStatusOtherWorktree SyncStatus = "active in another worktree" // the branch is active in another worktree and should not be synced )
func (SyncStatus) String ¶
func (self SyncStatus) String() string