Documentation
¶
Overview ¶
Package config contains the abstraction of multiple config files
Index ¶
- Constants
- Variables
- func MatchAny(l []RefSpec, n plumbing.ReferenceName) bool
- func Paths(scope Scope) ([]string, error)
- type Branch
- type Config
- type ConfigStorer
- type Modules
- type OptBool
- type RefSpec
- func (s RefSpec) Dst(n plumbing.ReferenceName) plumbing.ReferenceName
- func (s RefSpec) IsDelete() bool
- func (s RefSpec) IsExactSHA1() bool
- func (s RefSpec) IsForceUpdate() bool
- func (s RefSpec) IsWildcard() bool
- func (s RefSpec) Match(n plumbing.ReferenceName) bool
- func (s RefSpec) Reverse() RefSpec
- func (s RefSpec) Src() string
- func (s RefSpec) String() string
- func (s RefSpec) Validate() error
- type RemoteConfig
- type Scope
- type Submodule
- type URL
Constants ¶
const ( // DefaultFetchRefSpec is the default refspec used for fetch. DefaultFetchRefSpec = "+refs/heads/*:refs/remotes/%s/*" // DefaultPushRefSpec is the default refspec used for push. DefaultPushRefSpec = "refs/heads/*:refs/heads/*" )
const ( // DefaultPackWindow holds the number of previous objects used to // generate deltas. The value 10 is the same used by git command. DefaultPackWindow = uint(10) )
Variables ¶
var ( ErrInvalid = errors.New("config invalid key in remote or branch") ErrRemoteConfigNotFound = errors.New("remote config not found") ErrRemoteConfigEmptyURL = errors.New("remote config: empty URL") ErrRemoteConfigEmptyName = errors.New("remote config: empty name") )
var ( ErrModuleEmptyURL = errors.New("module config: empty URL") ErrModuleEmptyPath = errors.New("module config: empty path") ErrModuleBadPath = errors.New("submodule has an invalid path") ErrModuleBadName = errors.New("ignoring suspicious submodule name") )
var ( ErrRefSpecMalformedSeparator = errors.New("malformed refspec, separators are wrong") ErrRefSpecMalformedWildcard = errors.New("malformed refspec, mismatched number of wildcards") )
Functions ¶
Types ¶
type Branch ¶
type Branch struct {
// Name of branch
Name string
// Remote name of remote to track
Remote string
// Merge is the local refspec for the branch
Merge plumbing.ReferenceName
// Rebase instead of merge when pulling. Valid values are
// "true" and "interactive". "false" is undocumented and
// typically represented by the non-existence of this field
Rebase string
// Description explains what the branch is for.
// Multi-line explanations may be used.
//
// Original git command to edit:
// git branch --edit-description
Description string
// contains filtered or unexported fields
}
Branch contains information on the local branches and which remote to track
type Config ¶
type Config struct {
Core struct {
// IsBare if true this repository is assumed to be bare and has no
// working directory associated with it.
IsBare bool
// Worktree is the path to the root of the working tree.
Worktree string
// CommentChar is the character indicating the start of a
// comment for commands like commit and tag
CommentChar string
// RepositoryFormatVersion identifies the repository format and layout version.
RepositoryFormatVersion format.RepositoryFormatVersion
// ProtectNTFS controls whether NTFS-specific path protections are
// applied (e.g. rejecting .git trailing spaces/periods, alternate
// data streams, 8.3 short names). When unset, defaults to true on
// Windows.
ProtectNTFS OptBool
// ProtectHFS controls whether HFS+-specific path protections are
// applied (e.g. rejecting .git with Unicode zero-width or
// directional characters that HFS+ would normalize away).
// When unset, defaults to true on macOS.
ProtectHFS OptBool
}
User struct {
// Name is the personal name of the author and the committer of a commit.
Name string
// Email is the email of the author and the committer of a commit.
Email string
}
Author struct {
// Name is the personal name of the author of a commit.
Name string
// Email is the email of the author of a commit.
Email string
}
Committer struct {
// Name is the personal name of the committer of a commit.
Name string
// Email is the email of the committer of a commit.
Email string
}
Pack struct {
// Window controls the size of the sliding window for delta
// compression. The default is 10. A value of 0 turns off
// delta compression entirely.
Window uint
}
Init struct {
// DefaultBranch Allows overriding the default branch name
// e.g. when initializing a new repository or when cloning
// an empty repository.
DefaultBranch string
}
Extensions struct {
// ObjectFormat specifies the hash algorithm to use. The
// acceptable values are sha1 and sha256. If not specified,
// sha1 is assumed. It is an error to specify this key unless
// core.repositoryFormatVersion is 1.
//
// This setting must not be changed after repository initialization
// (e.g. clone or init).
ObjectFormat format.ObjectFormat
}
// Remotes list of repository remotes, the key of the map is the name
// of the remote, should equal to RemoteConfig.Name.
Remotes map[string]*RemoteConfig
// Submodules list of repository submodules, the key of the map is the name
// of the submodule, should equal to Submodule.Name.
Submodules map[string]*Submodule
// Branches list of branches, the key is the branch name and should
// equal Branch.Name
Branches map[string]*Branch
// URLs list of url rewrite rules, if repo url starts with URL.InsteadOf value, it will be replaced with the
// key instead.
URLs map[string]*URL
// Raw contains the raw information of a config file. The main goal is
// preserve the parsed information from the original format, to avoid
// dropping unsupported fields.
Raw *format.Config
}
Config contains the repository configuration https://www.kernel.org/pub/software/scm/git/docs/git-config.html#FILES
func LoadConfig ¶ added in v5.1.0
LoadConfig loads a config file from a given scope. The returned Config, contains exclusively information from the given scope. If it couldn't find a config file to the given scope, an empty one is returned.
func ReadConfig ¶ added in v5.1.0
ReadConfig reads a config file from a io.Reader.
type ConfigStorer ¶
ConfigStorer generic storage of Config object
type Modules ¶
type Modules struct {
// Submodules is a map of submodules being the key the name of the submodule.
Submodules map[string]*Submodule
// contains filtered or unexported fields
}
Modules defines the submodules properties, represents a .gitmodules file https://www.kernel.org/pub/software/scm/git/docs/gitmodules.html
type OptBool ¶ added in v5.19.1
type OptBool byte
OptBool is a tri-state boolean: unset, explicitly false, or explicitly true. Its zero value (OptBoolUnset) means the setting was not specified, which allows merge logic based on reflect.Value.IsZero to skip unset fields while still letting an explicit "false" override a previously set "true".
func NewOptBool ¶ added in v5.19.1
NewOptBool converts a plain bool into an OptBool.
func (OptBool) FormatBool ¶ added in v5.19.1
FormatBool returns the strconv-formatted value. Only meaningful when IsSet.
func (OptBool) IsSet ¶ added in v5.19.1
IsSet returns whether the value was explicitly specified (true or false).
type RefSpec ¶
type RefSpec string
RefSpec is a mapping from local branches to remote references. The format of the refspec is an optional +, followed by <src>:<dst>, where <src> is the pattern for references on the remote side and <dst> is where those references will be written locally. The + tells Git to update the reference even if it isn’t a fast-forward. eg.: "+refs/heads/*:refs/remotes/origin/*"
https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
func (RefSpec) Dst ¶
func (s RefSpec) Dst(n plumbing.ReferenceName) plumbing.ReferenceName
Dst returns the destination for the given remote reference.
func (RefSpec) IsExactSHA1 ¶ added in v5.1.0
IsExactSHA1 returns true if the source is a SHA1 hash.
func (RefSpec) IsForceUpdate ¶
IsForceUpdate returns if update is allowed in non fast-forward merges.
func (RefSpec) IsWildcard ¶
IsWildcard returns true if the RefSpec contains a wildcard.
type RemoteConfig ¶
type RemoteConfig struct {
// Name of the remote
Name string
// URLs the URLs of a remote repository. It must be non-empty. Fetch will
// always use the first URL, while push will use all of them.
URLs []string
// Mirror indicates that the repository is a mirror of remote.
Mirror bool
// Fetch the default set of "refspec" for fetch operation
Fetch []RefSpec
// contains filtered or unexported fields
}
RemoteConfig contains the configuration for a given remote repository.
func (*RemoteConfig) IsFirstURLLocal ¶
func (c *RemoteConfig) IsFirstURLLocal() bool
func (*RemoteConfig) Validate ¶
func (c *RemoteConfig) Validate() error
Validate validates the fields and sets the default values.
type Scope ¶ added in v5.1.0
type Scope int
Scope defines the scope of a config file, such as local, global or system.
type Submodule ¶
type Submodule struct {
// Name module name
Name string
// Path defines the path, relative to the top-level directory of the Git
// working tree.
Path string
// URL defines a URL from which the submodule repository can be cloned.
URL string
// Branch is a remote branch name for tracking updates in the upstream
// submodule. Optional value.
Branch string
// contains filtered or unexported fields
}
Submodule defines a submodule.
type URL ¶ added in v5.3.0
type URL struct {
// Name new base url
Name string
// Any URL that starts with this value will be rewritten to start, instead, with <base>.
// When more than one insteadOf strings match a given URL, the longest match is used.
InsteadOf string
// contains filtered or unexported fields
}
Url defines Url rewrite rules