Documentation ¶
Index ¶
- Constants
- Variables
- func ForEachIterator(iter bareIterator, cb func(plumbing.Object) error) error
- func ResolveReference(s ReferenceStorer, n plumbing.ReferenceName) (*plumbing.Reference, error)
- type IndexStorer
- type MultiObjectIter
- type ObjectIter
- type ObjectLookupIter
- type ObjectSliceIter
- type ObjectStorer
- type PackfileWriter
- type ReferenceIter
- type ReferenceSliceIter
- type ReferenceStorer
- type Transaction
- type Transactioner
Constants ¶
const MaxResolveRecursion = 1024
Variables ¶
var ErrMaxResolveRecursion = errors.New("max. recursion level reached")
ErrMaxResolveRecursion is returned by ResolveReference is MaxResolveRecursion is exceeded
var ( //ErrStop is used to stop a ForEach function in an Iter ErrStop = errors.New("stop iter") )
Functions ¶
func ForEachIterator ¶
ForEachIterator is a helper function to build iterators without need to rewrite the same ForEach function each time.
func ResolveReference ¶
func ResolveReference(s ReferenceStorer, n plumbing.ReferenceName) (*plumbing.Reference, error)
ResolveReference resolve a SymbolicReference to a HashReference
Types ¶
type IndexStorer ¶
IndexStorer generic storage of index.Index
type MultiObjectIter ¶
type MultiObjectIter struct {
// contains filtered or unexported fields
}
MultiObjectIter implements ObjectIter. It iterates over several ObjectIter,
The MultiObjectIter must be closed with a call to Close() when it is no longer needed.
func (*MultiObjectIter) Close ¶
func (iter *MultiObjectIter) Close()
Close releases any resources used by the iterator.
func (*MultiObjectIter) ForEach ¶
func (iter *MultiObjectIter) ForEach(cb func(plumbing.Object) error) error
ForEach call the cb function for each object contained on this iter until an error happends 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.
type ObjectIter ¶
type ObjectIter interface { Next() (plumbing.Object, error) ForEach(func(plumbing.Object) error) error Close() }
ObjectIter is a generic closable interface for iterating over objects.
func NewMultiObjectIter ¶
func NewMultiObjectIter(iters []ObjectIter) ObjectIter
NewMultiObjectIter returns an object iterator for the given slice of objects.
type ObjectLookupIter ¶
type ObjectLookupIter struct {
// contains filtered or unexported fields
}
ObjectLookupIter implements ObjectIter. It iterates over a series of object hashes and yields their associated objects by retrieving each one from object storage. The retrievals are lazy and only occur when the iterator moves forward with a call to Next().
The ObjectLookupIter must be closed with a call to Close() when it is no longer needed.
func NewObjectLookupIter ¶
func NewObjectLookupIter( storage ObjectStorer, t plumbing.ObjectType, series []plumbing.Hash) *ObjectLookupIter
NewObjectLookupIter returns an object iterator given an object storage and a slice of object hashes.
func (*ObjectLookupIter) Close ¶
func (iter *ObjectLookupIter) Close()
Close releases any resources used by the iterator.
func (*ObjectLookupIter) ForEach ¶
func (iter *ObjectLookupIter) ForEach(cb func(plumbing.Object) error) error
ForEach call the cb function for each object contained on this iter until an error happends 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 (*ObjectLookupIter) Next ¶
func (iter *ObjectLookupIter) Next() (plumbing.Object, error)
Next returns the next object from the iterator. If the iterator has reached the end it will return io.EOF as an error. If the object can't be found in the object storage, it will return plumbing.ErrObjectNotFound as an error. If the object is retreieved successfully error will be nil.
type ObjectSliceIter ¶
type ObjectSliceIter struct {
// contains filtered or unexported fields
}
ObjectSliceIter implements ObjectIter. It iterates over a series of objects stored in a slice and yields each one in turn when Next() is called.
The ObjectSliceIter must be closed with a call to Close() when it is no longer needed.
func NewObjectSliceIter ¶
func NewObjectSliceIter(series []plumbing.Object) *ObjectSliceIter
NewObjectSliceIter returns an object iterator for the given slice of objects.
func (*ObjectSliceIter) Close ¶
func (iter *ObjectSliceIter) Close()
Close releases any resources used by the iterator.
func (*ObjectSliceIter) ForEach ¶
func (iter *ObjectSliceIter) ForEach(cb func(plumbing.Object) error) error
ForEach call the cb function for each object contained on this iter until an error happends 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.
type ObjectStorer ¶
type ObjectStorer interface { // NewObject returns a new plumbing.Object, the real type of the object can // be a custom implementation or the defaul one, plumbing.MemoryObject NewObject() plumbing.Object // SetObject save an object into the storage, the object shuld be create // with the NewObject, method, and file if the type is not supported. SetObject(plumbing.Object) (plumbing.Hash, error) // Object get an object by hash with the given plumbing.ObjectType. // Implementors should return (nil, plumbing.ErrObjectNotFound) if an object // doesn't exist with both the given hash and object type. // // Valid plumbing.ObjectType values are CommitObject, BlobObject, TagObject, // TreeObject and AnyObject. If plumbing.AnyObject is given, the object must // be looked up regardless of its type. Object(plumbing.ObjectType, plumbing.Hash) (plumbing.Object, error) // IterObjects returns a custom ObjectIter over all the object on the // storage. // // Valid plumbing.ObjectType values are CommitObject, BlobObject, TagObject, IterObjects(plumbing.ObjectType) (ObjectIter, error) }
ObjectStorer generic storage of objects
type PackfileWriter ¶
type PackfileWriter interface { // PackfileWriter retuns a writer for writing a packfile to the storage // // If the Storer not implements PackfileWriter the objects should be written // using the Set method. PackfileWriter() (io.WriteCloser, error) }
PackfileWriter is a optional method for ObjectStorer, it enable direct write of packfile to the storage
type ReferenceIter ¶
type ReferenceIter interface { Next() (*plumbing.Reference, error) ForEach(func(*plumbing.Reference) error) error Close() }
ReferenceIter is a generic closable interface for iterating over references
type ReferenceSliceIter ¶
type ReferenceSliceIter struct {
// contains filtered or unexported fields
}
ReferenceSliceIter implements ReferenceIter. It iterates over a series of references stored in a slice and yields each one in turn when Next() is called.
The ReferenceSliceIter must be closed with a call to Close() when it is no longer needed.
func NewReferenceSliceIter ¶
func NewReferenceSliceIter(series []*plumbing.Reference) *ReferenceSliceIter
NewReferenceSliceIter returns a reference iterator for the given slice of objects.
func (*ReferenceSliceIter) Close ¶
func (iter *ReferenceSliceIter) Close()
Close releases any resources used by the iterator.
func (*ReferenceSliceIter) ForEach ¶
func (iter *ReferenceSliceIter) ForEach(cb func(*plumbing.Reference) error) error
ForEach call the cb function for each reference contained on this iter until an error happends 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.
type ReferenceStorer ¶
type ReferenceStorer interface { SetReference(*plumbing.Reference) error Reference(plumbing.ReferenceName) (*plumbing.Reference, error) IterReferences() (ReferenceIter, error) }
ReferenceStorer generic storage of references
type Transaction ¶
type Transaction interface { SetObject(plumbing.Object) (plumbing.Hash, error) Object(plumbing.ObjectType, plumbing.Hash) (plumbing.Object, error) Commit() error Rollback() error }
Transaction is an in-progress storage transaction. A transaction must end with a call to Commit or Rollback.
type Transactioner ¶
type Transactioner interface { // Begin starts a transaction. Begin() Transaction }
Transactioner is a optional method for ObjectStorer, it enable transaction base write and read operations in the storage