Documentation ¶
Index ¶
- Constants
- Variables
- func ReverseSortCommits(l []*Commit)
- func SortCommits(l []*Commit)
- func WalkCommitHistory(c *Commit, cb func(*Commit) error) error
- type Blob
- type BlobIter
- type Commit
- func (c *Commit) Decode(o plumbing.EncodedObject) (err error)
- func (b *Commit) Encode(o plumbing.EncodedObject) error
- func (c *Commit) File(path string) (*File, error)
- func (c *Commit) Files() (*FileIter, error)
- func (c *Commit) History() ([]*Commit, error)
- func (c *Commit) ID() plumbing.Hash
- func (c *Commit) NumParents() int
- func (c *Commit) Parents() *CommitIter
- func (c *Commit) String() string
- func (c *Commit) Tree() (*Tree, error)
- func (c *Commit) Type() plumbing.ObjectType
- type CommitIter
- type File
- type FileIter
- type Hash
- type Object
- type ObjectIter
- type Signature
- type Tag
- func (t *Tag) Blob() (*Blob, error)
- func (t *Tag) Commit() (*Commit, error)
- func (t *Tag) Decode(o plumbing.EncodedObject) (err error)
- func (t *Tag) Encode(o plumbing.EncodedObject) error
- func (t *Tag) ID() plumbing.Hash
- func (t *Tag) Object() (Object, error)
- func (t *Tag) String() string
- func (t *Tag) Tree() (*Tree, error)
- func (t *Tag) Type() plumbing.ObjectType
- type TagIter
- type Tree
- func (t *Tree) Decode(o plumbing.EncodedObject) (err error)
- func (t *Tree) Encode(o plumbing.EncodedObject) error
- func (t *Tree) File(path string) (*File, error)
- func (t *Tree) Files() *FileIter
- func (t *Tree) ID() plumbing.Hash
- func (t *Tree) Tree(path string) (*Tree, error)
- func (t *Tree) TreeEntryFile(e *TreeEntry) (*File, error)
- func (t *Tree) Type() plumbing.ObjectType
- type TreeEntry
- type TreeIter
- type TreeWalker
Constants ¶
const ( FileMode os.FileMode = 0100644 ExecutableMode os.FileMode = 0100755 SubmoduleMode os.FileMode = 0160000 SymlinkMode os.FileMode = 0120000 TreeMode os.FileMode = 0040000 )
const DateFormat = "Mon Jan 02 15:04:05 2006 -0700"
DateFormat is the format being used in the original git implementation
Variables ¶
var ( ErrMaxTreeDepth = errors.New("maximum tree depth exceeded") ErrFileNotFound = errors.New("file not found") ErrDirectoryNotFound = errors.New("directory not found") )
New errors defined by this package.
var ErrUnsupportedObject = errors.New("unsupported object type")
ErrUnsupportedObject trigger when a non-supported object is being decoded.
Functions ¶
func ReverseSortCommits ¶
func ReverseSortCommits(l []*Commit)
ReverseSortCommits sorts a commit list by commit date, from newer to older.
func SortCommits ¶
func SortCommits(l []*Commit)
SortCommits sorts a commit list by commit date, from older to newer.
Types ¶
type Blob ¶
Blob is used to store file data - it is generally a file.
func DecodeBlob ¶
func DecodeBlob(o plumbing.EncodedObject) (*Blob, error)
func (*Blob) Decode ¶
func (b *Blob) Decode(o plumbing.EncodedObject) error
Decode transforms a plumbing.EncodedObject into a Blob struct.
func (*Blob) Encode ¶
func (b *Blob) Encode(o plumbing.EncodedObject) error
Encode transforms a Blob into a plumbing.EncodedObject.
func (*Blob) ID ¶
ID returns the object ID of the blob. The returned value will always match the current value of Blob.Hash.
ID is present to fulfill the Object interface.
func (*Blob) Reader ¶
func (b *Blob) Reader() (io.ReadCloser, error)
Reader returns a reader allow the access to the content of the blob
func (*Blob) Type ¶
func (b *Blob) Type() plumbing.ObjectType
Type returns the type of object. It always returns plumbing.BlobObject.
Type is present to fulfill the Object interface.
type BlobIter ¶
type BlobIter struct { storer.EncodedObjectIter // contains filtered or unexported fields }
BlobIter provides an iterator for a set of blobs.
func NewBlobIter ¶
func NewBlobIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *BlobIter
NewBlobIter returns a BlobIter for the given repository and underlying object iterator.
The returned BlobIter will automatically skip over non-blob objects.
type Commit ¶
type Commit struct { Hash plumbing.Hash Author Signature Committer Signature Message string // contains filtered or unexported fields }
Commit points to a single tree, marking it as what the project looked like at a certain point in time. It contains meta-information about that point in time, such as a timestamp, the author of the changes since the last commit, a pointer to the previous commit(s), etc. http://schacon.github.io/gitbook/1_the_git_object_model.html
func DecodeCommit ¶
func DecodeCommit(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (*Commit, error)
DecodeCommit decodes an encoded object into a *Commit and associates it to the given object storer.
func (*Commit) Decode ¶
func (c *Commit) Decode(o plumbing.EncodedObject) (err error)
Decode transforms a plumbing.EncodedObject into a Commit struct.
func (*Commit) Encode ¶
func (b *Commit) Encode(o plumbing.EncodedObject) error
Encode transforms a Commit into a plumbing.EncodedObject.
func (*Commit) File ¶
File returns the file with the specified "path" in the commit and a nil error if the file exists. If the file does not exist, it returns a nil file and the ErrFileNotFound error.
func (*Commit) History ¶
History return a slice with the previous commits in the history of this commit
func (*Commit) ID ¶
ID returns the object ID of the commit. The returned value will always match the current value of Commit.Hash.
ID is present to fulfill the Object interface.
func (*Commit) NumParents ¶
NumParents returns the number of parents in a commit.
func (*Commit) Parents ¶
func (c *Commit) Parents() *CommitIter
Parents return a CommitIter to the parent Commits
func (*Commit) Type ¶
func (c *Commit) Type() plumbing.ObjectType
Type returns the type of object. It always returns plumbing.CommitObject.
Type is present to fulfill the Object interface.
type CommitIter ¶
type CommitIter struct { storer.EncodedObjectIter // contains filtered or unexported fields }
CommitIter provides an iterator for a set of commits.
func NewCommitIter ¶
func NewCommitIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *CommitIter
NewCommitIter returns a CommitIter for the given object storer and underlying object iterator.
The returned CommitIter will automatically skip over non-commit objects.
func (*CommitIter) ForEach ¶
func (iter *CommitIter) ForEach(cb func(*Commit) error) error
ForEach call the cb function for each commit contained on this iter until an error appends or the end of the iter is reached. If ErrStop is sent the iteration is stop but no error is returned. The iterator is closed.
func (*CommitIter) Next ¶
func (iter *CommitIter) Next() (*Commit, error)
Next moves the iterator to the next commit and returns a pointer to it. If it has reached the end of the set it will return io.EOF.
type File ¶
File represents git file objects.
type FileIter ¶
type FileIter struct {
// contains filtered or unexported fields
}
func NewFileIter ¶
func NewFileIter(s storer.EncodedObjectStorer, t *Tree) *FileIter
type Object ¶
type Object interface { ID() plumbing.Hash Type() plumbing.ObjectType Decode(plumbing.EncodedObject) error Encode(plumbing.EncodedObject) error }
Object is a generic representation of any git object. It is implemented by Commit, Tree, Blob, and Tag, and includes the functions that are common to them.
Object is returned when an object can be of any type. It is frequently used with a type cast to acquire the specific type of object:
func process(obj Object) { switch o := obj.(type) { case *Commit: // o is a Commit case *Tree: // o is a Tree case *Blob: // o is a Blob case *Tag: // o is a Tag } }
This interface is intentionally different from plumbing.EncodedObject, which is a lower level interface used by storage implementations to read and write objects.
func DecodeObject ¶
func DecodeObject(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (Object, error)
DecodeObject decodes an encoded object into an Object and associates it to the given object storer.
type ObjectIter ¶
type ObjectIter struct { storer.EncodedObjectIter // contains filtered or unexported fields }
ObjectIter provides an iterator for a set of objects.
func NewObjectIter ¶
func NewObjectIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *ObjectIter
NewObjectIter returns a ObjectIter for the given repository and underlying object iterator.
func (*ObjectIter) ForEach ¶
func (iter *ObjectIter) ForEach(cb func(Object) error) error
ForEach call the cb function for each object contained on this iter until an error happens or the end of the iter is reached. If ErrStop is sent the iteration is stop but no error is returned. The iterator is closed.
func (*ObjectIter) Next ¶
func (iter *ObjectIter) Next() (Object, error)
Next moves the iterator to the next object and returns a pointer to it. If it has reached the end of the set it will return io.EOF.
type Signature ¶
Signature represents an action signed by a person
type Tag ¶
type Tag struct { Hash plumbing.Hash Name string Tagger Signature Message string TargetType plumbing.ObjectType Target plumbing.Hash // contains filtered or unexported fields }
Tag represents an annotated tag object. It points to a single git object of any type, but tags typically are applied to commit or blob objects. It provides a reference that associates the target with a tag name. It also contains meta-information about the tag, including the tagger, tag date and message.
https://git-scm.com/book/en/v2/Git-Internals-Git-References#Tags
func DecodeTag ¶
func DecodeTag(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (*Tag, error)
DecodeTag decodes an encoded object into a *Commit and associates it to the given object storer.
func (*Tag) Blob ¶
Blob returns the blob pointed to by the tag. If the tag points to a different type of object ErrUnsupportedObject will be returned.
func (*Tag) Commit ¶
Commit returns the commit pointed to by the tag. If the tag points to a different type of object ErrUnsupportedObject will be returned.
func (*Tag) Decode ¶
func (t *Tag) Decode(o plumbing.EncodedObject) (err error)
Decode transforms a plumbing.EncodedObject into a Tag struct.
func (*Tag) Encode ¶
func (t *Tag) Encode(o plumbing.EncodedObject) error
Encode transforms a Tag into a plumbing.EncodedObject.
func (*Tag) ID ¶
ID returns the object ID of the tag, not the object that the tag references. The returned value will always match the current value of Tag.Hash.
ID is present to fulfill the Object interface.
func (*Tag) String ¶
String returns the meta information contained in the tag as a formatted string.
func (*Tag) Tree ¶
Tree returns the tree pointed to by the tag. If the tag points to a commit object the tree of that commit will be returned. If the tag does not point to a commit or tree object ErrUnsupportedObject will be returned.
func (*Tag) Type ¶
func (t *Tag) Type() plumbing.ObjectType
Type returns the type of object. It always returns plumbing.TagObject.
Type is present to fulfill the Object interface.
type TagIter ¶
type TagIter struct { storer.EncodedObjectIter // contains filtered or unexported fields }
TagIter provides an iterator for a set of tags.
func NewTagIter ¶
func NewTagIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *TagIter
NewTagIter returns a TagIter for the given object storer and underlying object iterator.
The returned TagIter will automatically skip over non-tag objects.
type Tree ¶
type Tree struct { Entries []TreeEntry Hash plumbing.Hash // contains filtered or unexported fields }
Tree is basically like a directory - it references a bunch of other trees and/or blobs (i.e. files and sub-directories)
func DecodeTree ¶
func DecodeTree(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (*Tree, error)
DecodeTree decodes an encoded object into a *Tree and associates it to the given object storer.
func (*Tree) Decode ¶
func (t *Tree) Decode(o plumbing.EncodedObject) (err error)
Decode transform an plumbing.EncodedObject into a Tree struct
func (*Tree) Encode ¶
func (t *Tree) Encode(o plumbing.EncodedObject) error
Encode transforms a Tree into a plumbing.EncodedObject.
func (*Tree) File ¶
File returns the hash of the file identified by the `path` argument. The path is interpreted as relative to the tree receiver.
func (*Tree) ID ¶
ID returns the object ID of the tree. The returned value will always match the current value of Tree.Hash.
ID is present to fulfill the Object interface.
func (*Tree) Tree ¶
Tree returns the tree identified by the `path` argument. The path is interpreted as relative to the tree receiver.
func (*Tree) TreeEntryFile ¶
TreeEntryFile returns the *File for a given *TreeEntry.
func (*Tree) Type ¶
func (t *Tree) Type() plumbing.ObjectType
Type returns the type of object. It always returns plumbing.TreeObject.
type TreeIter ¶
type TreeIter struct { storer.EncodedObjectIter // contains filtered or unexported fields }
TreeIter provides an iterator for a set of trees.
func NewTreeIter ¶
func NewTreeIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *TreeIter
NewTreeIter returns a TreeIter for the given repository and underlying object iterator.
The returned TreeIter will automatically skip over non-tree objects.
type TreeWalker ¶
type TreeWalker struct {
// contains filtered or unexported fields
}
TreeWalker provides a means of walking through all of the entries in a Tree.
func NewTreeWalker ¶
func NewTreeWalker(t *Tree, recursive bool) *TreeWalker
NewTreeWalker returns a new TreeWalker for the given tree.
It is the caller's responsibility to call Close() when finished with the tree walker.
func (*TreeWalker) Close ¶
func (w *TreeWalker) Close()
Close releases any resources used by the TreeWalker.
func (*TreeWalker) Next ¶
func (w *TreeWalker) Next() (name string, entry TreeEntry, err error)
Next returns the next object from the tree. Objects are returned in order and subtrees are included. After the last object has been returned further calls to Next() will return io.EOF.
In the current implementation any objects which cannot be found in the underlying repository will be skipped automatically. It is possible that this may change in future versions.
func (*TreeWalker) Tree ¶
func (w *TreeWalker) Tree() *Tree
Tree returns the tree that the tree walker most recently operated on.