Documentation
¶
Overview ¶
Package vcsstate allows getting the state of version control system repositories.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrNoRemote = errors.New("local repository has no valid remote")
ErrNoRemote is the error used when the local repository doesn't have a valid remote.
Functions ¶
This section is empty.
Types ¶
type NotFoundError ¶
type NotFoundError struct {
Err error // Underlying error with more details.
}
NotFoundError records an error where the remote repository is not found.
func (NotFoundError) Error ¶
func (e NotFoundError) Error() string
type RemoteVCS ¶
type RemoteVCS interface {
// RemoteBranchAndRevision returns the name and latest revision of the default branch
// from the remote. If the remote repository is not found, NotFoundError is returned.
RemoteBranchAndRevision(remoteURL string) (branch string, revision string, err error)
}
RemoteVCS describes how to use a version control system to get the remote status of a repository with remoteURL.
type VCS ¶
type VCS interface {
// Status returns the status of working directory.
// It returns empty string if no outstanding status.
Status(dir string) (string, error)
// Branch returns the name of the locally checked out branch.
Branch(dir string) (string, error)
// LocalRevision returns current local revision of default branch.
LocalRevision(dir string, defaultBranch string) (string, error)
// Stash returns a non-empty string if the repository has a stash.
Stash(dir string) (string, error)
// Contains reports whether the local default branch contains
// the commit specified by revision.
Contains(dir string, revision string, defaultBranch string) (bool, error)
// RemoteContains reports whether the remote default branch contains
// the commit specified by revision.
RemoteContains(dir string, revision string, defaultBranch string) (bool, error)
// RemoteURL returns primary remote URL, as set in the local repository.
// If there's no remote, then ErrNoRemote is returned.
RemoteURL(dir string) (string, error)
// RemoteBranchAndRevision returns the name and latest revision of the default branch
// from the remote. If there's no remote, then ErrNoRemote is returned, and the
// default branch can be queried with NoRemoteDefaultBranch.
// If the remote repository is not found, NotFoundError is returned,
// and the default branch can be queried with NoRemoteDefaultBranch.
// This operation requires the use of network, and will fail if offline.
// When offline, CachedRemoteDefaultBranch can be used as a fallback.
RemoteBranchAndRevision(dir string) (branch string, revision string, err error)
// CachedRemoteDefaultBranch returns a locally cached remote default branch,
// if it can do so successfully. It can be used to make a best effort guess
// of the remote default branch when offline. If it fails, the only viable
// next best fallback before online again is to use NoRemoteDefaultBranch.
CachedRemoteDefaultBranch() (string, error)
// NoRemoteDefaultBranch returns the default value of default branch for this vcs.
// It can only be relied on when there's no remote, since remote can have a custom
// value of default branch.
NoRemoteDefaultBranch() string
}
VCS describes how to use a version control system to get the status of a repository rooted at dir.
Click to show internal directories.
Click to hide internal directories.