Documentation ¶
Overview ¶
package plumbing implement the core interfaces and structs used by go-git
Index ¶
- Variables
- func HashesSort(a []Hash)
- func IsHash(s string) bool
- type DeltaObject
- type EncodedObject
- type Hash
- type HashSlice
- type Hasher
- type MemoryObject
- func (o *MemoryObject) Close() error
- func (o *MemoryObject) Hash() Hash
- func (o *MemoryObject) Reader() (io.ReadCloser, error)
- func (o *MemoryObject) SetSize(s int64)
- func (o *MemoryObject) SetType(t ObjectType)
- func (o *MemoryObject) Size() int64
- func (o *MemoryObject) Type() ObjectType
- func (o *MemoryObject) Write(p []byte) (n int, err error)
- func (o *MemoryObject) Writer() (io.WriteCloser, error)
- type ObjectType
- type PermanentError
- type Reference
- type ReferenceName
- type ReferenceType
- type Revision
- type UnexpectedError
Constants ¶
This section is empty.
Variables ¶
var ( ErrObjectNotFound = errors.New("object not found") // ErrInvalidType is returned when an invalid object type is provided. ErrInvalidType = errors.New("invalid object type") )
var ( ErrReferenceNotFound = errors.New("reference not found") // ErrInvalidReferenceName is returned when a reference name is invalid. ErrInvalidReferenceName = errors.New("invalid reference name") )
var RefRevParseRules = []string{
"%s",
"refs/%s",
"refs/tags/%s",
"refs/heads/%s",
"refs/remotes/%s",
"refs/remotes/%s/HEAD",
}
RefRevParseRules are a set of rules to parse references into short names, or expand into a full reference. These are the same rules as used by git in shorten_unambiguous_ref and expand_ref. See: https://github.com/git/git/blob/e0aaa1b6532cfce93d87af9bc813fb2e7a7ce9d7/refs.c#L417
Functions ¶
Types ¶
type DeltaObject ¶
type DeltaObject interface { EncodedObject // BaseHash returns the hash of the object used as base for this delta. BaseHash() Hash // ActualHash returns the hash of the object after applying the delta. ActualHash() Hash // Size returns the size of the object after applying the delta. ActualSize() int64 }
DeltaObject is an EncodedObject representing a delta.
type EncodedObject ¶
type EncodedObject interface { Hash() Hash Type() ObjectType SetType(ObjectType) Size() int64 SetSize(int64) Reader() (io.ReadCloser, error) Writer() (io.WriteCloser, error) }
Object is a generic representation of any git object
type Hash ¶
Hash SHA1 hashed content
var ZeroHash Hash
ZeroHash is Hash with value zero
func ComputeHash ¶
func ComputeHash(t ObjectType, content []byte) Hash
ComputeHash compute the hash for a given ObjectType and content
type HashSlice ¶
type HashSlice []Hash
HashSlice attaches the methods of sort.Interface to []Hash, sorting in increasing order.
type MemoryObject ¶
type MemoryObject struct {
// contains filtered or unexported fields
}
MemoryObject on memory Object implementation
func (*MemoryObject) Close ¶
func (o *MemoryObject) Close() error
Close releases any resources consumed by the object when it is acting as a ObjectWriter.
func (*MemoryObject) Hash ¶
func (o *MemoryObject) Hash() Hash
Hash returns the object Hash, the hash is calculated on-the-fly the first time it's called, in all subsequent calls the same Hash is returned even if the type or the content have changed. The Hash is only generated if the size of the content is exactly the object size.
func (*MemoryObject) Reader ¶
func (o *MemoryObject) Reader() (io.ReadCloser, error)
Reader returns an io.ReadCloser used to read the object's content.
For a MemoryObject, this reader is seekable.
func (*MemoryObject) SetSize ¶
func (o *MemoryObject) SetSize(s int64)
SetSize set the object size, a content of the given size should be written afterwards
func (*MemoryObject) SetType ¶
func (o *MemoryObject) SetType(t ObjectType)
SetType sets the ObjectType
func (*MemoryObject) Writer ¶
func (o *MemoryObject) Writer() (io.WriteCloser, error)
Writer returns a ObjectWriter used to write the object's content.
type ObjectType ¶
type ObjectType int8
ObjectType internal object type Integer values from 0 to 7 map to those exposed by git. AnyObject is used to represent any from 0 to 7.
const ( InvalidObject ObjectType = 0 CommitObject ObjectType = 1 TreeObject ObjectType = 2 BlobObject ObjectType = 3 TagObject ObjectType = 4 // 5 reserved for future expansion OFSDeltaObject ObjectType = 6 REFDeltaObject ObjectType = 7 AnyObject ObjectType = -127 )
func ParseObjectType ¶
func ParseObjectType(value string) (typ ObjectType, err error)
ParseObjectType parses a string representation of ObjectType. It returns an error on parse failure.
func (ObjectType) Bytes ¶
func (t ObjectType) Bytes() []byte
func (ObjectType) IsDelta ¶
func (t ObjectType) IsDelta() bool
IsDelta returns true for any ObjectType that represents a delta (i.e. REFDeltaObject or OFSDeltaObject).
func (ObjectType) String ¶
func (t ObjectType) String() string
func (ObjectType) Valid ¶
func (t ObjectType) Valid() bool
Valid returns true if t is a valid ObjectType.
type PermanentError ¶
type PermanentError struct {
Err error
}
func NewPermanentError ¶
func NewPermanentError(err error) *PermanentError
func (*PermanentError) Error ¶
func (e *PermanentError) Error() string
type Reference ¶
type Reference struct {
// contains filtered or unexported fields
}
Reference is a representation of git reference
func NewHashReference ¶
func NewHashReference(n ReferenceName, h Hash) *Reference
NewHashReference creates a new HashReference reference
func NewReferenceFromStrings ¶
NewReferenceFromStrings creates a reference from name and target as string, the resulting reference can be a SymbolicReference or a HashReference base on the target provided
func NewSymbolicReference ¶
func NewSymbolicReference(n, target ReferenceName) *Reference
NewSymbolicReference creates a new SymbolicReference reference
func (*Reference) Name ¶
func (r *Reference) Name() ReferenceName
Name returns the name of a reference
func (*Reference) Target ¶
func (r *Reference) Target() ReferenceName
Target returns the target of a symbolic reference
func (*Reference) Type ¶
func (r *Reference) Type() ReferenceType
Type returns the type of a reference
type ReferenceName ¶
type ReferenceName string
ReferenceName reference name's
const ( HEAD ReferenceName = "HEAD" Master ReferenceName = "refs/heads/master" Main ReferenceName = "refs/heads/main" )
func NewBranchReferenceName ¶
func NewBranchReferenceName(name string) ReferenceName
NewBranchReferenceName returns a reference name describing a branch based on his short name.
func NewNoteReferenceName ¶
func NewNoteReferenceName(name string) ReferenceName
NewNoteReferenceName returns a reference name describing a note based on his short name.
func NewRemoteHEADReferenceName ¶
func NewRemoteHEADReferenceName(remote string) ReferenceName
NewRemoteHEADReferenceName returns a reference name describing a the HEAD branch of a remote.
func NewRemoteReferenceName ¶
func NewRemoteReferenceName(remote, name string) ReferenceName
NewRemoteReferenceName returns a reference name describing a remote branch based on his short name and the remote name.
func NewTagReferenceName ¶
func NewTagReferenceName(name string) ReferenceName
NewTagReferenceName returns a reference name describing a tag based on short his name.
func (ReferenceName) IsBranch ¶
func (r ReferenceName) IsBranch() bool
IsBranch check if a reference is a branch
func (ReferenceName) IsNote ¶
func (r ReferenceName) IsNote() bool
IsNote check if a reference is a note
func (ReferenceName) IsRemote ¶
func (r ReferenceName) IsRemote() bool
IsRemote check if a reference is a remote
func (ReferenceName) IsTag ¶
func (r ReferenceName) IsTag() bool
IsTag check if a reference is a tag
func (ReferenceName) Short ¶
func (r ReferenceName) Short() string
Short returns the short name of a ReferenceName
func (ReferenceName) String ¶
func (r ReferenceName) String() string
func (ReferenceName) Validate ¶
func (r ReferenceName) Validate() error
Validate validates a reference name. This follows the git-check-ref-format rules. See https://git-scm.com/docs/git-check-ref-format
It is important to note that this function does not check if the reference exists in the repository. It only checks if the reference name is valid. This functions does not support the --refspec-pattern, --normalize, and --allow-onelevel options.
Git imposes the following rules on how references are named:
- They can include slash / for hierarchical (directory) grouping, but no slash-separated component can begin with a dot . or end with the sequence .lock.
- They must contain at least one /. This enforces the presence of a category like heads/, tags/ etc. but the actual names are not restricted. If the --allow-onelevel option is used, this rule is waived.
- They cannot have two consecutive dots .. anywhere.
- They cannot have ASCII control characters (i.e. bytes whose values are lower than \040, or \177 DEL), space, tilde ~, caret ^, or colon : anywhere.
- They cannot have question-mark ?, asterisk *, or open bracket [ anywhere. See the --refspec-pattern option below for an exception to this rule.
- They cannot begin or end with a slash / or contain multiple consecutive slashes (see the --normalize option below for an exception to this rule).
- They cannot end with a dot ..
- They cannot contain a sequence @{.
- They cannot be the single character @.
- They cannot contain a \.
type ReferenceType ¶
type ReferenceType int8
ReferenceType reference type's
const ( InvalidReference ReferenceType = 0 HashReference ReferenceType = 1 SymbolicReference ReferenceType = 2 )
func (ReferenceType) String ¶
func (r ReferenceType) String() string
type Revision ¶
type Revision string
Revision represents a git revision to get more details about git revisions please check git manual page : https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html
type UnexpectedError ¶
type UnexpectedError struct {
Err error
}
func NewUnexpectedError ¶
func NewUnexpectedError(err error) *UnexpectedError
func (*UnexpectedError) Error ¶
func (e *UnexpectedError) Error() string
Directories ¶
Path | Synopsis |
---|---|
format
|
|
commitgraph
Package commitgraph implements encoding and decoding of commit-graph files.
|
Package commitgraph implements encoding and decoding of commit-graph files. |
commitgraph/v2
Package v2 implements encoding and decoding of commit-graph files.
|
Package v2 implements encoding and decoding of commit-graph files. |
config
Package config implements encoding and decoding of git config files.
|
Package config implements encoding and decoding of git config files. |
gitignore
Package gitignore implements matching file system paths to gitignore patterns that can be automatically read from a git repository tree in the order of definition priorities.
|
Package gitignore implements matching file system paths to gitignore patterns that can be automatically read from a git repository tree in the order of definition priorities. |
idxfile
Package idxfile implements encoding and decoding of packfile idx files.
|
Package idxfile implements encoding and decoding of packfile idx files. |
index
Package index implements encoding and decoding of index format files.
|
Package index implements encoding and decoding of index format files. |
objfile
Package objfile implements encoding and decoding of object files.
|
Package objfile implements encoding and decoding of object files. |
packfile
Package packfile implements encoding and decoding of packfile format.
|
Package packfile implements encoding and decoding of packfile format. |
pktline
Package pktline implements reading payloads form pkt-lines and encoding pkt-lines from payloads.
|
Package pktline implements reading payloads form pkt-lines and encoding pkt-lines from payloads. |
package hash provides a way for managing the underlying hash implementations used across go-git.
|
package hash provides a way for managing the underlying hash implementations used across go-git. |
Package object contains implementations of all Git objects and utility functions to work with them.
|
Package object contains implementations of all Git objects and utility functions to work with them. |
commitgraph
Package commitgraph provides an interface for efficient traversal over Git commit graph either through the regular object storage, or optionally with the index stored in commit-graph file (Git 2.18+).
|
Package commitgraph provides an interface for efficient traversal over Git commit graph either through the regular object storage, or optionally with the index stored in commit-graph file (Git 2.18+). |
protocol
|
|
packp/capability
Package capability defines the server and client capabilities.
|
Package capability defines the server and client capabilities. |
packp/sideband
Package sideband implements a sideband mutiplex/demultiplexer
|
Package sideband implements a sideband mutiplex/demultiplexer |
Package revlist provides support to access the ancestors of commits, in a similar way as the git-rev-list command.
|
Package revlist provides support to access the ancestors of commits, in a similar way as the git-rev-list command. |
Package storer defines the interfaces to store objects, references, etc.
|
Package storer defines the interfaces to store objects, references, etc. |
Package transport includes the implementation for different transport protocols.
|
Package transport includes the implementation for different transport protocols. |
client
Package client contains helper function to deal with the different client protocols.
|
Package client contains helper function to deal with the different client protocols. |
file
Package file implements the file transport protocol.
|
Package file implements the file transport protocol. |
git
Package git implements the git transport protocol.
|
Package git implements the git transport protocol. |
http
Package http implements the HTTP transport protocol.
|
Package http implements the HTTP transport protocol. |
internal/common
Package common implements the git pack protocol with a pluggable transport.
|
Package common implements the git pack protocol with a pluggable transport. |
server
Package server implements the git server protocol.
|
Package server implements the git server protocol. |
ssh
Package ssh implements the SSH transport protocol.
|
Package ssh implements the SSH transport protocol. |
test
Package test implements common test suite for different transport implementations.
|
Package test implements common test suite for different transport implementations. |