|
- // package plumbing implement the core interfaces and structs used by go-git
- package plumbing
-
- import (
- "errors"
- "io"
- )
-
- var (
- ErrObjectNotFound = errors.New("object not found")
- // ErrInvalidType is returned when an invalid object type is provided.
- ErrInvalidType = errors.New("invalid object type")
- )
-
- // Object is a generic representation of any git object
- type EncodedObject interface {
- Hash() Hash
- Type() ObjectType
- SetType(ObjectType)
- Size() int64
- SetSize(int64)
- Reader() (io.ReadCloser, error)
- Writer() (io.WriteCloser, error)
- }
-
- // DeltaObject is an EncodedObject representing a delta.
- 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
- }
-
- // 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.
- type ObjectType int8
-
- 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 (t ObjectType) String() string {
- switch t {
- case CommitObject:
- return "commit"
- case TreeObject:
- return "tree"
- case BlobObject:
- return "blob"
- case TagObject:
- return "tag"
- case OFSDeltaObject:
- return "ofs-delta"
- case REFDeltaObject:
- return "ref-delta"
- case AnyObject:
- return "any"
- default:
- return "unknown"
- }
- }
-
- func (t ObjectType) Bytes() []byte {
- return []byte(t.String())
- }
-
- // Valid returns true if t is a valid ObjectType.
- func (t ObjectType) Valid() bool {
- return t >= CommitObject && t <= REFDeltaObject
- }
-
- // IsDelta returns true for any ObjectTyoe that represents a delta (i.e.
- // REFDeltaObject or OFSDeltaObject).
- func (t ObjectType) IsDelta() bool {
- return t == REFDeltaObject || t == OFSDeltaObject
- }
-
- // ParseObjectType parses a string representation of ObjectType. It returns an
- // error on parse failure.
- func ParseObjectType(value string) (typ ObjectType, err error) {
- switch value {
- case "commit":
- typ = CommitObject
- case "tree":
- typ = TreeObject
- case "blob":
- typ = BlobObject
- case "tag":
- typ = TagObject
- case "ofs-delta":
- typ = OFSDeltaObject
- case "ref-delta":
- typ = REFDeltaObject
- default:
- err = ErrInvalidType
- }
- return
- }
|